两个问题:
我知道git使用parent链接提交,很容易从头到尾记录提交。
喜欢:git log HEAD~10
但我需要从头到尾查询,有可能吗?
答案 0 :(得分:185)
git log -10
将显示与修订版规范匹配的10个最新提交(缺少的规范意味着“所有提交”)。
请参阅联系手册:
git help log
部分 Commit Limiting
-<number>, -n <number>, --max-count=<number>
Limit the number of commits to output.
答案 1 :(得分:46)
只需使用一种行格式记录所有内容并拖尾输出:
git log --pretty=oneline | tail -n 10
答案 2 :(得分:15)
这是我的方法,
获得前10个提交:
git log -n 10
-n是数字
其他强> 要获得下一个10提交,请先跳过10:
git log --skip=10 -n 10
答案 3 :(得分:11)
获取最近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`
取决于您希望结果的顺序。
答案 4 :(得分:5)
我将使用以下简单的语法命令;
git log -10 --oneline
答案 5 :(得分:4)
简单地记录所有反向-1意味着列出一个日志
git log --reverse -1
答案 6 :(得分:1)
最好的结果来自两个最佳答案的组合:
git log --pretty=oneline -10
答案 7 :(得分:0)
因为......更多细节: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
添加行号(提交索引?)答案 8 :(得分:0)
如果有人想要的不仅仅是git单行日志:
git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'
其中末尾的11
应该设置为比您想要的提交数多1
的位置。
here指出git log --reverse -n 10
不能按您需要的方式工作。 (我想它应该是非可交换的,以便您能够以相反的顺序选择前10个提交或后10个提交?)
答案 9 :(得分:0)