自第一次提交以来如何获得第n次提交?

kra*_*vil 12 git

我可以找出有多少提交:

git rev-list HEAD --count
Run Code Online (Sandbox Code Playgroud)

假设返回123提交.

如何找到123中的第n个提交?请注意,我不是在HEAD之前要求第n次提交.我想知道第一次提交后的第n次提交.

Tim*_*Tim 15

这可能被认为是丑陋的,但我想不出更好的方法

$git log --skip=N --max-count=1
Run Code Online (Sandbox Code Playgroud)

这将显示1个提交,从HEAD算起来N.要使用它,您需要提供一个数字N.N计算方法是

N = total-commits - desired-commit-nr

假设git rev-list HEAD --count返回10并且您想要查看第3次提交

$git log --skip=7 --max-count=1
Run Code Online (Sandbox Code Playgroud)

我们使用7因为

 7 = 10 - 3
total ^   ^ the commit we want
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果使用`--reverse`,则可以使用外部命令进行过滤(`git rev-list --reverse HEAD | sed -n -e 3p`来获得倒数第三)。令人讨厌的是,您不能将它与`--skip`结合使用,因为在*反转之前*发生了跳过动作,因此您仍然需要跳过7。此外,如果rev列表很长,则通过sed进行管道传递只是提取一行很贵,所以以上更好。 (2认同)