在git中logging第一个10

两个问题:

  1. 如何从头到尾显示git中的前10个提交。 (没有分支)
  2. 如何指定提交索引并logging它。 (显示第二或第三)

我知道git使用父母链接提交,很容易logging提交从结束开始。 比如: git log HEAD~10

但是我需要从头到尾查询,可能吗?

只需使用一种行格式logging所有内容,然后输出:

 git log --pretty=oneline | tail -n 10 
 git log -10 

将显示10个最新的提交符合修订规范(缺less规范意味着“所有提交”)。

请参阅manpage:

 git help log 

部分Commit Limiting

 -<number>, -n <number>, --max-count=<number> Limit the number of commits to output. 

要获得最后的10个提交:

 git log HEAD~10..HEAD 

为了使它们按照从最旧到最新的顺序排列:

 git log --reverse HEAD~10..HEAD 

请注意,如果有合并,则可能会显示超过10次提交; 如果您只想遍历每个分支的第一个父项,请添加 – --first-parent

有关更详细的信息,请参阅git rev-list的文档。


编辑:你已经得到了一个有用的答案,“显示提交附近的历史开始”(再次,请参阅有关多个非连接提交DAG在回购协议中的警告)。 但是你也可以做,例如:

 git log --no-walk `git rev-list HEAD | tail -n 10` 

和:

 git log --no-walk `git rev-list --reverse HEAD | head -n 10` 

取决于你想要结果的顺序。

简单地logging一切反向-1意味着列出一个日志

 git log --reverse -1 

因为…更多细节:

  1. 如何从头到尾显示git中的前10个提交。 (没有分支)
  2. 如何指定提交索引并logging它。 (显示第二或第三)

通过(没有分支),你可能会问关于reflog而不是任何给定的祖先链。 以下与您所在分支无关。

git log -g --pretty=oneline | tail -10

 <sha> HEAD@{###}: action: summary (old) <sha> HEAD@{###}: action: summary (older) ... <sha> HEAD@{###}: action: summary (oldest) 
  • -g--walk-reflogs而不是走提交祖先链,走walkloglogs.q
  • 添加|cut -d ' ' -f 2|tr -d ':' > log日志只loggingreflog提交索引。

以下将显示当前签出分支的最早祖先。

git log --reverse --pretty=oneline | head -10 | cat -n

 1 <sha> summary (oldest) 2 <sha> summary (second) 
  • --reverse以相反的顺序输出提交。
  • 不能简单地使用-n 10-10因为它破坏了 – --reverse
  • cat -n添加行号(提交索引?)