git merge和git rebase的区别

参考https://blog.csdn.net/u010698107/article/details/129000177

Git版本控制中,git rebasegit merge这两个命令都可以用来集成从一个分支和另一个分支的更改。它们是两种不同的合并方法,本文将介绍它们的差异。

下面举例说明一下这两个命令的区别,从master拉一个叫feature的分支出来:

feature分支进行了两次提交(C5、C6),此时其它人也进行了两次提交(C3、C4),并且合并到了master分支:

feature分支和master分支需要进行分支合并,下面来演示git rebasegit merge这两个命令的差异。

git merge操作

1
2
git checkout feature
git pull origin master # 相当于git fetch origin master + git merge origin/master feature

git merge命令会在feature分支创建一个新的“合并的提交”(merge commit, C7),然后将两个分支的历史联系在一起

,现有的分支不会以任何方式改变。

git rebase操作

1
2
git checkout feature
git pull --rebase origin master # 相当于git fetch origin master + git rebase origin/master feature

此命令将整个feature分支移动到master分支的顶端,有效地将所有新提交合并到master分支中。和git merge不同的是,git rebase通过为原始分支中的每个提交创建全新的提交(C5、C6)来重写历史记录。