2015-07-01 45 views
1

我需要打印比指定日期更早的特定格式的最新10個提交。我需要處理的日期,通過bash命令獲得:我嘗試了一些選項使用GIT顯示比特定格式的特定日期更舊的提交

date +"%Y%m%d%H%M" 

,但至今沒有

e.g.: git log -5 --no-merges --format=format:%cd --after=201506301524 
+0

這是不工作,因爲git不喜歡該日期格式(你收到錯誤)?這是不是工作,因爲你沒有得到你期望的提交?還有別的嗎? –

回答

1

您需要使用--until,而不是--after,此外,正確的日期格式,但可以使用date將其轉換:

git log --no-merges --format=format:%cd -10 --until "$(date -d "$(echo "201506301524" | sed 's/....$/ &/')")" 

$(echo "201506301524" | sed 's/....$/ &/')轉換爲 日期爲20150630 1524這是日期的有效輸入格式。

0

您必須格式化日期,只有數字不會做。使用其中之一:

--after=2015-06-30-15:24:00 
--after=2015-06-30:16:24:00 
--after="2015-06-30 16:24:00" 

所有這些格式都被接受。

0

首先,你需要使用正確的日期格式(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