我认为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
也就是说,“给只有1个提交ID,必须至少24小时,并且位于当前分支“。
全部放在一起:
git rev-list --no-merges HEAD \
--not $(git rev-list -n1 --before="24 hours" --first-parent HEAD)
(注:--not abcdef
是另一种说法^abcdef
但它适用于所有以下参数,因此重新排序的选项。)
默认输出rev-list
只是原始版本,但您可以使用--pretty
选项使其更像git log
。 --pretty=short
与您习惯的大致相同。
来源
2015-10-16 08:46:12
ams
而不是'--no-merges',可能' - first-parent'会更好吗? – ams
@ams只会显示合并提交。我需要未合并的提交,在过去24小时内添加到'master'分支。 – WonderCsabo