03 git merge & git rebase

git merge & git rebase

git merge

​ git merge会合并两个分支,并形成一个新的commit在合并分支上,因为合并后数据增加,需要重新计算hash值。新的commit指向两个parent。

image-20240324214306483

git rebase

git rebase用于精简合并后的分支结构。

​ git rebase同样会合并两个分支,但是是找到两个分支的公共祖先,将别的分支之后所有新的commit先放到公共祖先后,再将自己分支所有新的commit放到后面。

image-20240324213851068

​ 注意:这会导致自己分支新的每一个commit重新计算hash值,因为它仅与文件数据有关,而新增了dev分支的内容再次计算hash值,得出的结果自然不同。

使用

对于git rebase的使用,应该在dev分支进行(将main分支的更新的部分rebase过来,自己更新的部分补充在后面)。

然后切换到main分支,merge合并dev分支。

git checkout dev
git rebase main
git checkout main
git merge dev
image-20241105201916470

参考资料