下面举例说明一下这两个命令的区别,从
master
拉一个叫feature
的分支出来,在
feature
分支进行了两次提交,此时其它人也进行了两次提交,并且合并到了 master
分支,此时是无法push到远程仓库的,需要进行分支合并,下面来演示
git rebase
和 git merge
这两个命令的差异。1、
git merge
操作git merge
命令会在feature
分支创建一个新的“合并的提交”(merge commit),现有的分支不会以任何方式改变。这意味着每次合并上游(upstream)更改时,
feature
分支将有一个多余的合并提交。如果master
分支更新频繁,这可能会导致feature
分支历史记录有大量的合并提交记录。2、
git rebase
操作此命令将整个
feature
分支移动到 master
分支的顶端,有效地将所有新提交合并到master
分支中。和git merge
不同的是,git rebase
通过为原始分支中的每个提交创建全新的提交来重写历史记录。rebase
的主要好处就是历史记录更清晰,没有不必要的合并提交,没有任何分叉。