118

两个问题:

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

我知道 git 使用 parent 链接提交,很容易从头到尾记录提交。喜欢:git log HEAD~10

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

4

10 回答 10

299
git log -10

将显示与修订规范匹配的 10 个最新提交(缺少规范意味着“所有提交”)。

请参阅手册页:

git help log

部分Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.
于 2012-04-27T08:27:26.160 回答
66

只需使用一种行格式记录所有内容并尾随输出:

git log  --pretty=oneline | tail -n 10 
于 2012-04-27T07:04:45.087 回答
36

这是我的方法,

要获得前 10 个提交:

git log -n 10

-n 是数字

附加 要获得下一个 10 提交跳过前 10 :

git log --skip=10 -n 10
于 2017-12-18T09:15:40.840 回答
15

要获取最后 10 次提交:

git log HEAD~10..HEAD

要按从旧到新的顺序获取它们:

git log --reverse HEAD~10..HEAD

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

有关更多详细信息,请参阅git rev-list.


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

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

和:

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

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

于 2012-04-27T06:14:23.723 回答
14

最好的结果来自两个最佳答案的组合:

git log --pretty=oneline -10
于 2019-03-19T02:00:33.383 回答
13

我会使用以下简单的语法命令;

git log -10 --oneline
于 2020-05-11T05:07:09.543 回答
4

简单地记录一切反向 -1 表示列出一个日志

git log  --reverse -1
于 2012-11-22T09:18:26.760 回答
1

试试这个简洁的输出格式:

git log --date=short -10 --pretty="%C(Yellow)%h %x09 %C(reset)%ad %x09 %C(Cyan)%an: %C(reset)%s"

它将打印带有颜色的短行,例如: 在此处输入图像描述

于 2021-02-04T16:55:13.970 回答
0

因为...更多细节:p

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

通过(无分支),您可能会询问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走提交祖先链,而是走 reflog entries.q
  • 添加|cut -d ' ' -f 2|tr -d ':' > log仅记录 reflog 提交索引。

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

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

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

于 2014-04-17T19:57:04.307 回答
0

如果有人想要的不仅仅是 git 单行日志:

git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'

最后11应该设置为1超过您想要的提交数。

正如这里指出的那样,git log --reverse -n 10它不能按您的需要工作。(我想它需要是不可交换的,才能让您能够以相反的顺序选择前 10 次提交或最后 10 次提交

于 2019-07-03T05:01:57.367 回答