我正在尝试显示过去24小时内添加到git log --format=format:%s --no-merges --since='24 hours ago'
分支的提交(不包括合并提交)。目前我正在使用此命令:
master
但是这有一个问题:如果提交超过24小时,但在过去24小时内合并到master
分支,则该命令不会列出提交。是否可以显示过去24小时内添加到git reflog
分支的提交,而不是过去24小时内创建的提交?
请注意我在干净的CI工作区中执行此操作,因此a.js
无法帮助我。
提前致谢!
答案 0 :(得分:3)
我认为rev-list
就是你想要的。
试试这个:
git rev-list --no-merges '^<24-hour-old-commit>' HEAD
应该列出所有可以从提交HEAD
访问的非合并提交,但不能从提交<24-hour-old-commit>
访问。
例如,在此修订图中,它列出了大写提交,但不是小写:
a - b - c - 24h - H - i - J - K - HEAD
\ /
D - E - F - G '
提交H
,J
,K
和HEAD
都不到24小时。提交i
也更年轻,但由于它是合并提交而被省略。提交D
,E
,F
和G
可能是任何年龄,但仅在过去24小时内合并,因此也会列出。
在上述命令中,--max-age
或--since
选项会遇到与git log
相同的问题,但可以使用它们为您查找<24-hour-old-commit>
:
git rev-list -n1 --before="24 hours" --first-parent HEAD
也就是说,&#34;只提供1个提交ID,必须至少24小时,并且在当前分支上#34;。
全部放在一起:
git rev-list --no-merges HEAD \
--not $(git rev-list -n1 --before="24 hours" --first-parent HEAD)
(注意:--not abcdef
是说^abcdef
的另一种方式,除了它适用于所有后面的参数,因此重新排序选项。)
rev-list
的默认输出只是原始修订版,但您可以使用git log
选项使其更像--pretty
。 --pretty=short
与您习惯的大致相同。