2010-10-19 80 views
2

我在一個分支'develop'中工作,當準備好與master進行合併時,使用交互式rebase將我所有的小提交壓縮到一個包含提交功能的提交中,我將其應用於master之上。我該如何保存一個被壓縮到另一個的提交時間?

工作的很好,唯一的問題我有的是提交標記的時間是第一個小提交。這是有道理的,因爲這是唯一的承諾,「其他」被「壓扁」。任何人都知道如何將最終的小提交的時間標記爲最後的小提交而不是第一個?通過'編輯'最早的提交併將後面的提交壓縮到此提交中(我大概可以編輯時間屬性),可能可以這樣做,但有沒有更好的方法?

回答

5

如果您不能重新排列提交以選擇具有所需日期的提交(例如,因爲上次提交不會在第一次提交的父級上完全應用),那麼您可以嘗試以下方法。

如果你已經擠成一團你發展提交到一個單一的提交上發展,那麼你可以使用git show的引用日誌開發來提取原始最終日期提交(擠壓之前)和然後用git commit --date=修改新提交的日期。

git commit --amend -C HEAD --date="$(git show --pretty=format:%ad [email protected]{1})" 

此修訂(--amend)的HEAD提交以便

  • 它具有提交消息,並從HEAD日期,
    -C HEAD;使用這避免了起始提交信息只是爲了一個編輯器立即退出而不作任何改變;如果你實際上想要編輯提交信息以及更改日期,請將此部分關閉)
  • 其日期爲
    --date=
    • 同一日期最近的現有尖端開發
      "$(git show --pretty=format:%ad [email protected]{1})")。

如果[email protected]{1}沒有你想要的日期,那麼你可以使用git log -g develop找到一個犯有你想要的日期。

+2

重新排序可能會導致我頻繁失敗,因爲承諾被壓扁的內容往往會碰到相同的內容,而將最後一個壓入內容可能會導致衝突。這對我來說似乎是一個更有用的答案! (1) – Cascabel 2010-10-20 00:52:34

4

對提交進行重新排序,以便具有要保留的時間戳的那個是pick ed,然後squash其他所有內容。

+0

doh!謝謝Ether,應該這樣做。 – 46and2 2010-10-19 19:27:54

相關問題