美文网首页
Git merge 和 Git rebase 区别

Git merge 和 Git rebase 区别

作者: 迷路的丸子 | 来源:发表于2018-08-24 16:43 被阅读0次

git merge 和 git rebase 均具有合并分支的效果,但合并分支的机理不同

Branch

Git merge

git merge 是将本质上生成一个新的提交,如果合并的时候遇到冲突,仅需要修改后重新commit,保留了分支详情

  • 优点:记录了真实的commit情况,包括每个分支的详情
  • 缺点:因为每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit比较频繁时,看到分支很杂乱
Merge

Git rebase

git rebase 的本质是变基,合并之前的commit历史,将分支的所有commit按提交顺序转移到干路末端

  • 优点:得到更简洁的项目历史,去掉了merge commit
  • 缺点:如果合并出现代码问题不容易定位,因为rewrite了history

合并时如果出现冲突需要按照如下步骤解决:

  • 修改冲突部分
  • git add
  • git rebase --continue

(如果第三步无效可以执行 git rebase --skip)

Rebase.png

参考

https://www.jianshu.com/p/f23f72251abc

总结

  • git rebase尽可能不要在公共分支上使用,由于他人在master上的共同开发,可能会引起许多冲突
  • git rebase的使用需注意其对提交历史的破坏性,如果有人需要观测开发的历史过程,尽量避免使用rebase
  • 想得到干净直观的线性历史树,用git rebase
  • 想保留完整的历史记录,避免重写commit的风险,用git merge

相关文章

网友评论

      本文标题:Git merge 和 Git rebase 区别

      本文链接:https://www.haomeiwen.com/subject/fkhiiftx.html