考虑一个由几个开发人员同时处理代码库的团队。将要素恢复到主分支时,可以git merge
或git rebase
。
我从其他几位开发者那里听说,与git merge
相比,使用git rebase
会使您的git历史变得时髦。
我也见过SO question about the difference between merge and rebase。
One SO answer提到了rebase的优点是如何避免钻石形状。但是这对git日志意味着什么呢?
Another SO answer讨论如何合并交错历史线程。但是,一个人的主要分支是否可以拥有它所包含的所有作品的所有历史?
我想我的一般问题是: 使用merge和rebase时git日志的生成方式有何不同?
额外信用:合并使得事情变得非常困难的一个例子,相反,改变可以减轻这种困难。
答案 0 :(得分:1)
这是一个简单的示例,用于显示git log --oneline --graph --decorate --all
中的差异。
合并后记录输出
* e8dc85d Merge other branch into master
|\
| * 30a040f (other) edited a.txt on other branch
* | 0bc86a0 edited a.txt on master
|/
* b6c1082 added a.txt
在rebase和merge之后记录输出
* 1e42180 Merge another branch into master
|\
| * 924fe1e (another) edited b.txt on another branch
|/
* dab33be edited b.txt on master
* 0d64167 added b.txt
<强>结论强>
真的有很多话要说(例如在rebase示例中,可以避免合并提交,但在日志中丢失分支布局)。
我的主要区别在于,使用rebase,功能分支与master垂直分开,其他分支合并为master。
既然你不是在征求意见,我会留给你。