lhlGitHub / trisome

前端大厂进攻学习资料库
21 stars 1 forks source link

说说 git rebase 和 git merge 的区别 #40

Open lhlGitHub opened 2 years ago

zhangqiang0821 commented 2 years ago

git merge:将两个分支,合并提交为一个新提交,并且新提交有2个提交 git rebase:会取消分支中的每个提交,并把他们临时存放,然后把当前分支更新到最新的origin分支,最后再吧所有提交应用到分支上

Moannas commented 2 years ago

git merge: 会保留所有的commit纪录 特点:自动创建一个新的commit 如果合并的时候遇到冲突,仅需要修改后重新commit 优点:记录了真实的commit情况,包括每个分支的详情 缺点:因为每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit比较频繁时,看到分支很杂乱。

git rebase: 只会把对比变动的内容提交上去 rebase 特点:会合并之前的commit历史 优点:得到更简洁的项目历史,去掉了merge commit 缺点:如果合并出现代码问题不容易定位,因为rewrite了history

如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase 如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge