我需要打印比指定日期更早的特定格式的最新10個提交。我需要處理的日期,通過bash命令獲得:我嘗試了一些選項使用GIT顯示比特定格式的特定日期更舊的提交
date +"%Y%m%d%H%M"
,但至今沒有
e.g.: git log -5 --no-merges --format=format:%cd --after=201506301524
我需要打印比指定日期更早的特定格式的最新10個提交。我需要處理的日期,通過bash命令獲得:我嘗試了一些選項使用GIT顯示比特定格式的特定日期更舊的提交
date +"%Y%m%d%H%M"
,但至今沒有
e.g.: git log -5 --no-merges --format=format:%cd --after=201506301524
您需要使用--until
,而不是--after
,此外,正確的日期格式,但可以使用date
將其轉換:
git log --no-merges --format=format:%cd -10 --until "$(date -d "$(echo "201506301524" | sed 's/....$/ &/')")"
$(echo "201506301524" | sed 's/....$/ &/')
轉換爲 日期爲20150630 1524
這是日期的有效輸入格式。
您必須格式化日期,只有數字不會做。使用其中之一:
--after=2015-06-30-15:24:00
--after=2015-06-30:16:24:00
--after="2015-06-30 16:24:00"
所有這些格式都被接受。
首先,你需要使用正確的日期格式(date +"%Y-%m-%d %H:%M:00"
):
git log --no-merges --format=format:%cd --after="2015-06-30 15:24:00"
現在,你可以使用--reverse
得到最古老的提交第一:
git log --reverse --no-merges --format=format:%cd --after="2015-06-30 15:24:00"
不幸的是,git log --reverse -10
不會返回你想要的,因爲它會抓取10個最新的提交,,然後反轉列表(這意味着無論指定日期,你都會得到相同的列表)。
另一種方法是對這個結果使用head
:
git log --reverse --no-merges --format=format:%cd --after="2015-06-30 15:24:00" | head -10
這是不工作,因爲git不喜歡該日期格式(你收到錯誤)?這是不是工作,因爲你沒有得到你期望的提交?還有別的嗎? –