过去 24 小时内添加到 master 的日志提交

Log commits added to master in last 24 hours

我正在尝试显示在过去 24 小时内添加到 master 分支的提交(不包括合并提交)。目前我正在为此使用此命令:

git log --format=format:%s --no-merges --since='24 hours ago'

然而这有一个问题:如果一个提交早于 24 小时,但在最近 24 小时内合并到 master 分支,该命令将不会列出该提交。是否可以显示过去 24 小时内添加到 master 分支的提交,而不是过去 24 小时内创建的提交?

请注意我在一个干净的 CI 工作区中执行此操作,因此 git reflog 无法帮助我。

提前致谢!

我觉得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 '

提交 HJKHEAD 都不到 24 小时。提交 i 也更年轻,但由于它是合并提交而被省略。提交 DEFG 可能是任何年龄,但仅在最近 24 小时内合并,因此它们也被列出。


在上面的命令中,--max-age--since 选项会遇到与 git log 相同的问题,但它们可用于查找 <24-hour-old-commit>你:

git rev-list -n1 --before="24 hours" --first-parent HEAD

即"give only 1 commit ID, that must be at least 24 hours old, and is on the current branch".

综合起来:

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 与您习惯的大致相同。