两个问题:
- 如何从头到尾显示git中的前10个提交。(无分支)
- 如何指定提交索引并记录它。(显示第二或第三)
我知道git使用parent链接提交,很容易从头到尾记录提交。喜欢:git log HEAD~10
但是我需要从头到尾进行查询,这可能吗?
Answers:
只需使用一种行格式记录所有内容并尾随输出:
git log --pretty=oneline | tail -n 10
git rev-list HEAD | tail -n 10
获取要列出的10个ID,然后您可以按照自己喜欢的格式显示它们(不限于单行方法)。
tail
似乎失去了我在git控制台中获得的漂亮颜色。像git log --oneline -10
在其他答案中一样传递参数,按我的预期工作。
git log -10
将显示10个与修订规范匹配的最新提交(缺少规范意味着“所有提交”)。
参见联机帮助页:
git help log
部分 Commit Limiting
-<number>, -n <number>, --max-count=<number>
Limit the number of commits to output.
tail
平台上的可用性。
first
10,而不是latest
。
这是我的方法
要获得前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
lkj = log --pretty=oneline --abbrev-commit -10
。现在,我意识到它不能回答OP的问题,但是我来这里是为了寻找简单的数字开关。
因为...更多细节: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
is --walk-reflogs
而不是遍历提交祖先链,而是遍历reflog条目。|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
添加行号(提交索引?)