我一直在尝试分支模型,如下文所述: http://nvie.com/posts/a-successful-git-branching-model/
git merge --no-ff
分支项然后解决任何合并冲突我假设所有来自另一个分支的合并提交将按顺序放在一起,但事实并非如此。以下是git log
:
f28e150 Merge branch 'items'
8281666 [Master] Another middle commit before merge
73d0ca9 [items] commit 2
0442978 [items] commit 1
为什么在主分支之前显示项目分支的前两个提交?在合并提交下将它们展示在一起是不是更有意义,因为那时我将它与我的代码合并了?
调用图表选项:git log --graph
以正确的顺序显示
* f28e150 Merge branch 'items'
|\
| * 73d0ca9 [items] commit 2
| * 0442978 [items] commit 1
* | 8281666 [Master] Another middle commit before merge
|/
我想要它们的原因是让我更容易撤消整个合并
答案 0 :(得分:8)
简短的回答是git log
对其输出进行排序,您必须选择自己喜欢的排序顺序。 (它排序是因为必须:parent/child relationships in a graph provide only a partial order但git log
需要强加总订单。)
细节在the git log
documentation中描述,这篇文章很长;搜索commit ordering
(此处的链接应该直接转到它)。
"反向时间顺序"默认有点谎言(在旧版本的Git中也是如此),因此默认情况下获得的顺序将取决于您的特定Git版本。请注意,--graph
会自动启用--topo-order
,因此--topo-order
可能就是您想要的。
另请注意,您可以使用--first-parent
限制修订步行,以便在每个合并的第一个父级中仅查看 。在这种情况下,你根本不会看到另一个分支。要使--first-parent
有用,合并的每个人都需要对它有点小心,这样你就没有" foxtrot合并"推进进入侧枝。见GIT: How can I prevent foxtrot merges in my 'master' branch?