用 git 记录前10个

两个问题:

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

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

但是我需要从头到尾的询问,这可能吗?

104181 次浏览

要获得最后10个提交:

git log HEAD~10..HEAD

按照最古老到最新的顺序排列:

git log --reverse HEAD~10..HEAD

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

有关更多细节,请参见 git rev-list的文档。


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

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

以及:

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

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

只需用一行格式记录所有内容并跟踪输出:

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

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

参见页面:

git help log

Commit Limiting

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

只要把所有内容都记录到 return-1就意味着列出一个日志

git log  --reverse -1

因为... 更多细节: 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 entry. 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)
  • 按相反的顺序输出提交。
  • 不能简单地使用 -n 10-10,因为它会破坏 --reverse
  • cat -n添加行号(提交索引?)

我的方法是,

要获得前10个提交:

git log -n 10

N 是数字

附加条款 为了得到下一个10提交跳过前10:

git log --skip=10 -n 10

最好的结果是两个最佳答案的结合:

git log --pretty=oneline -10

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

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

其中最后的 11应该设置为 1多于您想要的提交次数。

正如 给你指出的,git log --reverse -n 10不能按照你的需要工作

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

git log -10 --oneline

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

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

它会打印带有颜色的短行,比如: enter image description here