git log --tags更改提交顺序

时间:2015-12-25 10:26:11

标签: git git-log

默认情况下,git log提交按逆时间顺序显示。

commit 519f71eb2e4e1fa5da429bb01f95d2b6517c4c34
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:05 2015 +1100

    Fourth commit

commit d52ef03bbdb825499ed317172eacb29d6666cb13
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:04 2015 +1100

    Third commit

commit 4992115ed36e0a2135f1ea5bfc6bd6d4aa6ba97a
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:03 2015 +1100

    Second commit

commit 9fc40f59a209c17cb8554afd4476c14126f22ad8
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:03 2015 +1100

    First commit

但如果我运行git log --tags,则提交顺序不同

commit 519f71eb2e4e1fa5da429bb01f95d2b6517c4c34
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:05 2015 +1100

    Fourth commit

commit d52ef03bbdb825499ed317172eacb29d6666cb13
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:04 2015 +1100

    Third commit

commit 9fc40f59a209c17cb8554afd4476c14126f22ad8
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:03 2015 +1100

    First commit

commit 4992115ed36e0a2135f1ea5bfc6bd6d4aa6ba97a
Author: Steve Mao <maochenyan@gmail.com>
Date:   Fri Dec 25 21:07:03 2015 +1100

    Second commit

根据https://git-scm.com/docs/git-log

  

- 标签[=&lt;模式&GT;]
  伪装成refs / tags中的所有引用都在命令行中列为&lt; commit&gt;。如果&lt; pattern&gt;给出,将标签限制为匹配给定shell glob的标签。如果模式缺少?*[,则隐含最后/*

它没有提到订单。那是为什么?

2 个答案:

答案 0 :(得分:1)

前两个提交的时间戳似乎相同:

Date:   Fri Dec 25 21:07:03 2015 +1100
Date:   Fri Dec 25 21:07:03 2015 +1100

(默认排序基于提交时间戳,这显示 author 时间戳,因此我无法证明两个不可见的时间戳是同样的,但这是非常具有启发性的,因为普通提交的作者和提交日期是相同的。)

鉴于时间戳相同,按时间戳排序不会提供特定订单。由于缺少特定的顺序,我们可能会期望git将使用stable sort,因此在使用以下父链接找到的相同时间戳进行提交之前,将显示命令行上指定的提交。因此,如果有一个标记指向commit 9fc40f5...(“First commit”),并且您在命令行(通过--tags)给出了该标记,我们可以预期提交将在{{1}之前提交}。

(文档实际上并没有声称它首先使用了稳定的排序,但是如果排序不稳定,我们应该期望在任何一种情况下半等随机排列等时间戳。)< / p>

请注意,添加4992115...(或--topo-order,暗示--graph)应该会使输出更接近我的预期。

答案 1 :(得分:0)

注意另一种情况是git log --tags更改输出:当您查询不存在模式的标记时(对于不存在的标记) 这已在Git 2.14.x / 2.15(2017年第3季度)

中修复

commit 5d34d1acommit 0159ba3commit 7ba8262commit 0c5dc74Jeff King (peff)(2017年8月2日)。{
(由Junio C Hamano -- gitster --合并于commit 8fbaf0b,2017年8月11日)

  

git log --tag=no-such-tag”从log开始显示HEAD   已被修复---它现在什么也没有显示。