订购git-rev-list

问题描述 投票:6回答:2

git-rev-list如何命令它返回的提交?

我主要是指在开发的并发分支上进入的提交,然后合并到主分支。似乎没有按照日期对提交进行排序,这是有道理的,因为提交可以在过去或将来的不同时间挑选。

例如,这里是git-log的一些历史...

*   Sat, 25 Aug 2012 11:37:23 -0700 8238401
|\  
| * Thu, 23 Aug 2012 12:29:09 -0700 c9de861
* |   Fri, 24 Aug 2012 16:29:01 -0700 b7e8827
|\ \  
| * | Mon, 14 May 2012 20:46:30 +0200 0a1db74
| * | Mon, 14 May 2012 17:54:25 +0200 e03e71d
| * | Fri, 13 Jul 2012 12:01:11 +0200 bffa852
* | |   Fri, 24 Aug 2012 15:45:13 -0700 09fad50
|\ \ \  
| * | | Fri, 24 Aug 2012 12:19:22 -0700 97a17e4
| * | | Thu, 9 Aug 2012 19:43:25 -0700 5f4a61a
| * | | Fri, 3 Aug 2012 14:28:07 -0700 0c8858d
| * | | Thu, 2 Aug 2012 13:00:58 -0700 aa13bf0
| * | | Wed, 18 Jul 2012 14:30:15 -0700 decff7b
* | | |   Fri, 24 Aug 2012 15:43:19 -0700 091c742

以下是通过rev-list输出的相同历史记录。

$ git rev-list HEAD --max-count=13
8238401ccb9f7018c927866896bea583d351ad2a # 1 root
c9de8611d6a3e77757a714cdf6acf46178b1d622 # 2 descends into the second parent
b7e8827b8bbca0c69d85be34cc4a88888c1152f2 # 3 first parent of root
09fad5069636fb2e8cacf15817834e3d32ff6b8e # 4 descends into the first parent
091c742af985cc78711727ca06a24ae42b376fae
7fbca880aa5c011257ef734d0b5bfd5545dbaf6b
07c06f7a83640e11d6be13a87f02e986ecc6e4b3
1168410426293aef8ce33becb277ff225595e183
97a17e4e9fa5cafa531ff79cb88a9ee5c224a613
0a1db746fbcaf09681e446250f75581cc8f8fd05
e03e71da56608f60770eb80767dcd94e698cdcae
5f4a61aea834fe25ce1596bc9c0e0b5e563aa98b
0c8858de8c82bae3fd88513724689a07d231da7e

rev-list命令如何决定是列出第一个父项还是下降到第n个父项的提交图中?例如,在查看(1)之后,rev-list下降到第二个父(2)。然而,在查看(3)之后,它下降到第一个父(4)。这种行为定义明确吗?

git git-rev-list
2个回答
4
投票

默认情况下,提交按逆时间顺序排序。您可以根据您传递的选项以不同的顺序获得输出。有关其他选项,请参阅git-rev-list手册页中的“提交顺序”部分。

git log默认也按逆时间顺序排序。但是,当你用--graph运行它时它意味着--topo-order

最后,按日期提交排序是通过提交日期完成的,但git log的默认输出显示作者日期。有了补丁,樱桃挑选和rebase,这两者可能会失去同步。

最后两点应该解释为什么你的两个输出的排序方式不同,为什么表面上git rev-list没有按日期排序。


1
投票

当用作git describe时,Git 2.16(2018年第一季度)将允许git describe <blob>根据可用的ref给对象一个人类可读的名称。 (更多关于“Which commit has this blob?”)

在这种情况下,git rev-list添加了一个新订单。 请参阅commit ce5b6f9Stefan Beller (stefanbeller)

revision.h:按照提交的顺序引入blob / tree walk

在遍历提交时按顺序列出树对象的功能将在下一个提交中使用,其中我们教git describe不仅描述提交,还描述blob。

这意味着git rev-list man page有一个新的对象遍历顺序:

--in-commit-order::

按提交顺序打印树和blob id。 树和blob id在它们首次被提交引用后打印。

© www.soinside.com 2019 - 2024. All rights reserved.