WeHack BBS
git-merge和git-rebase的区别 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 程序设计讨论区 (https://bbs.wehack.space/forum-14.html)
+--- 主题: git-merge和git-rebase的区别 (/thread-172.html)



git-merge和git-rebase的区别 - vimacs - 06-30-2020

git-merge是在合并点重放一个节点从分叉点开始的总的修改,git-rebase是把分叉点开始的所有提交逐个应用到一个新的位置上。所以说git-rebase有修改历史的效果,而git-merge则保留了分叉的历史。
Gerrit Code Review一般使用cherry-pick方法,相当于对一个提交进行了rebase,这样的项目的git历史记录是看不到分叉的。用rebase的方法合并代码的效果就是让历史成为一条链。
而Git的作者的另一个项目Linux内核就是大量使用merge的典型例子。在项目贡献者多的情况下,难以做到完美的rebase,一般会采用merge. merge的另一个重要的价值就是可以清晰地展示历史上每个分支的情况。


讨论:
1. 用git-merge合并的分支怎么进行bisect操作?
2. 在公用分支上不应使用force push.
3. 从两个或多个分叉点merge出来的版本是否有可能进行rebase?


RE: git-merge和git-rebase的区别 - vimacs - 02-25-2021

git-merge 有一个不错的属性,假如有两个分支 main, other,在 other 上 git merge main,之后再在 main 上 git merge other,这时是一个 fast forward merge.


RE: git-merge和git-rebase的区别 - vimacs - 06-07-2021

今天合并同事的代码的时候,发现居然会有人 revert 一个 merge commit,这次想合并代码有点难办了。