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,这次想合并代码有点难办了。 |