合并分支后的Git订单

Kha*_*awa 7 git version-control github

我一直在尝试以下文章中描述的分支模型:http: //nvie.com/posts/a-successful-git-branching-model/

  1. 我创建了一个名为master的新分支,在那里做了一些提交
  2. 回到分支主人并做了一次提交
  3. 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
Run Code Online (Sandbox Code Playgroud)

为什么在主分支之前显示项目分支的前两个提交?在合并提交下将它们显示在一起是不是更有意义,因为那时我将它与我的代码合并了?

调用图形选项:git log --graph以正确的顺序显示它

*   f28e150 Merge branch 'items'
|\  
| * 73d0ca9 [items] commit 2
| * 0442978 [items] commit 1
* | 8281666 [Master] Another middle commit before merge
|/  
Run Code Online (Sandbox Code Playgroud)

我希望它们在一起的原因是让我更容易撤消整个合并

tor*_*rek 9

简短的回答是git log对其输出进行排序,您必须选择您喜欢的排序顺序.(它之所以排序是因为它必须:图中的父/子关系只提供部分订单,git log需要强加总订单.)

的细节中所描述git log文档,这是很长; 搜索commit ordering(这里的链接应该直接带你到它).

"反向时间顺序"默认声明现在有点谎言(在旧版本的Git中也是如此),因此默认情况下获得的顺序将取决于您的特定Git版本.请注意,自动--graph打开--topo-order,因此--topo-order可能是您想要的.

还需要注意的是,你可以限制修订边走边看第一的每个合并母公司使用--first-parent.在这种情况下,您根本不会看到其他分支.为了--first-parent有用,合并的每个人都需要对它有点小心,这样你就没有"foxtrot merges"将提交推送到侧枝.请参阅GIT:如何在"主"分支中阻止foxtrot合并?