2010-10-19 82 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

相关问题