我認爲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