两个问题:
- 如何从头到尾显示 git 中的前 10 个提交。(无分店)
- 如何指定提交索引并记录它。(显示第二个或第三个)
我知道 git 使用 parent 链接提交,很容易从头到尾记录提交。喜欢:git log HEAD~10
但是我需要从头到尾查询,可以吗?
git log -10
将显示与修订规范匹配的 10 个最新提交(缺少规范意味着“所有提交”)。
请参阅手册页:
git help log
部分Commit Limiting
-<number>, -n <number>, --max-count=<number>
Limit the number of commits to output.
只需使用一种行格式记录所有内容并尾随输出:
git log --pretty=oneline | tail -n 10
这是我的方法,
要获得前 10 个提交:
git log -n 10
-n 是数字
附加 要获得下一个 10 提交跳过前 10 :
git log --skip=10 -n 10
要获取最后 10 次提交:
git log HEAD~10..HEAD
要按从旧到新的顺序获取它们:
git log --reverse HEAD~10..HEAD
请注意,如果有合并,这可能会显示超过 10 个提交;--first-parent
如果您只想遍历每个分支的第一个父级,请添加。
有关更多详细信息,请参阅git rev-list
.
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 -10
我会使用以下简单的语法命令;
git log -10 --oneline
简单地记录一切反向 -1 表示列出一个日志
git log --reverse -1
因为...更多细节:p
通过(无分支),您可能会询问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
添加行号(提交索引?)如果有人想要的不仅仅是 git 单行日志:
git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'
最后11
应该设置为1
超过您想要的提交数。
正如这里指出的那样,git log --reverse -n 10
它不能按您的需要工作。(我想它需要是不可交换的,才能让您能够以相反的顺序选择前 10 次提交或最后 10 次提交)