如何在git中获取倒数第二个提交的哈希值

21

我正在使用以下git命令获取最近的2个提交哈希值

git log -n 2 --pretty=format:"%H"  #To get only hash value of commit

但我只需要倒数第二个提交哈希。

任何帮助都将是极好的。

谢谢。

3个回答

36
git rev-parse @~

rev-parse将各种注释转换为哈希值,@表示当前头部,~表示前一个提交。

这个规则适用于任意远的提交:例如,您可以写成@~3(或@~~~)以指定“当前头部之前三个提交”。


2
我认为这里缺少一个关键的东西:修订选择器@〜也接受数字,例如@〜3表示:HEAD(@)的父级()的父级的父级(3次)。 ([请参见git文档](https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection#_ancestry_references)) - Gerrit-K
@Griddo 应该编辑一下,因为那真的非常有帮助。 - Tom Granot
1
很好,@t0mgs。虽然在有关“上一个提交”的问题中并不是必需的,但人们可能也会在这里寻找其他先前的提交记录。 - amalloy
@amalloy,比如说我! :) - Tom Granot
我更喜欢在索引中使用HEAD。例如,要获取最新的提交,我会使用git rev-parse HEAD~0,要获取倒数第二个提交,我会使用git rev-parse HEAD~1等。 - ferpaxecosanxez

21

使用skip属性
--skip=<number>跳过指定数量的提交记录再开始显示提交输出。

git log -n 1 --skip 1 --pretty=format:"%H"

点击链接了解有关git log的更多信息。


1
我喜欢这个回答胜过被采纳的那个,因为我觉得这个跳过参数非常直观。 - Kutzi
还可以与git rev-list一起使用: git rev-list --skip 1 -n1 HEAD - Kutzi

4
你可以通过在命令后加上管道符 | ,将其输出结果传递给tail命令来实现:
git log -n 2 --pretty=format:"%H" | tail -1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接