2012-04-04 60 views
19

考慮我犯混帳壁球和保存最後提交的時間戳

... -- A -- B -- C 

如果我使用git rebase -i所有三個提交擠進了一個,我們可以

pick A 
squash B 
squash C 

我看到的結果提交A有原始時間戳。如何使它繼承提交C(最後一個)的時間戳?

我能想到的是git commit --amend --date=<new_time>,但這種方式需要記住提前C的時間戳,然後再壓扁或引用。

我發現最新提交的時間戳更合理,因爲它顯示了我實際完成了提交中的工作。

謝謝。

回答

11

有沒有一個簡單的方法來做到這一點,但有幾個選項。這裏有一個:

git commit --amend --date="$(git show -s --pretty=tformat:%ai <sha1-of-C>)" 

而另:

git commit --amend -c <sha1-of-C> 

後者將揍你現有的提交信息,所以你必須重寫。

+0

爲什麼使用'tformat'? – 2012-04-05 01:03:48

+0

@CrendKing:在這種情況下,它是'format'還是'tformat'並不重要,因爲'tformat'換行符被shell的命令替換規則所剝奪。然而,99%的時間我想要最終換行符(或任何終止符),因爲我通常使用腳本解析自定義日誌輸出。爲了確保我在習慣時習慣性地鍵入'tformat',即使沒有關係,我也會使用'tformat'。 – 2012-04-05 04:38:53

3

git commit --amend --reset-author

+0

這不使用C中的時間戳,它使用當前時間作爲時間戳。 – Doug 2018-01-18 01:39:40