Rebase VS Merge

虽然在平时使用 Git 的过程中有接触过 rebase 和 merge,但并未较系统的整理过相关内容;惊闻一个具有多年编程经验的 iOS 开发对 rebase 一无所知,突然觉得很有必要给自己补一下这一块的知识。

git rebase 和 git merge 两者都是为了解决把一个分支合并到另一个分支而设计的,但是两者的运行方式却截然不同。

Rebase

rebase 会改写当前分支的提交历史,让分支看起来很简单,但是在 rebase 之前要考虑清楚那个分支(如master)是否还有其它人在用,不然本地有了master的内容,其它人又提交到 remote,就又回去了。

Merge

merge 是一个安全的无损操作,这一点 rebase 则不同,但如果你拉出来的原分支有频繁的提交,一直 merge 会污染你当前的分支,让人看不懂。

Summary

总的来说,如果想要分支提交历史看起来是线性的、简单的,就用 rebase 去将其它分支的内容合并过来;如果想完整保留自己分支的提交历史,就用 merge 去合并。

以上内容整理自Atlassian教程。

实践结论

假设当前开发分支为 L,L 切出来的分支为 M。

1、如果 L 分支在开发过程中,需要用到切出来之后 M 上的新代码,可以使用 git rebase 将新代码同步到 L 分支。

2、如果 L 分支在 rebase 时遇到多条冲突要解决,且多条冲突就集中在某几个重复的文件上,则可以使用 git merge 一次性解决所有冲突并将新代码合并过来。

文章目录
  1. 1. Rebase
  2. 2. Merge
  3. 3. Summary
  4. 4. 实践结论