两个问题:
我知道 git 使用父级来链接提交,很容易从头到尾记录提交。 喜欢:
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
我会使用下面的简单语法命令;
git log -10 --oneline
最佳结果来自两个最佳答案的组合:
git log --pretty=oneline -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`
取决于您想要结果的顺序。
简单地反向记录所有内容 -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
不是遍历提交祖先链,而是遍历引用日志条目。q|cut -d ' ' -f 2|tr -d ':' > log
以仅记录引用日志提交索引。以下将显示当前签出分支的最早祖先。
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
多于您想要的提交数量。
正如here指出的那样,
git log --reverse -n 10
无法按您需要的方式工作。 (我想它需要是不可交换的,才能让你能够以相反的顺序选择前 10 个提交或最后 10 个提交🤪)