合并分支后的Git订单

时间:2016-07-13 20:02:21

标签: git github version-control

我一直在尝试分支模型,如下文所述: http://nvie.com/posts/a-successful-git-branching-model/

  1. 我创建了一个名为master的新分支,在那里做了一些提交
  2. 回到分公司主人并做了一次提交
  3. git merge --no-ff分支项然后解决任何合并冲突
  4. 我假设所有来自另一个分支的合并提交将按顺序放在一起,但事实并非如此。以下是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
    |/  
    

    我想要它们的原因是让我更容易撤消整个合并

1 个答案:

答案 0 :(得分:8)

简短的回答是git log对其输出进行排序,您必须选择自己喜欢的排序顺序。 (它排序是因为必须parent/child relationships in a graph provide only a partial ordergit 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?