如何保留要压缩到另一个提交的提交时间?

时间:2010-10-19 18:38:45

标签: git rebase git-rebase

我在一个分支'develop'工作,当准备好与master合并时,使用交互式rebase将我的所有小提交压缩成一个包含功能的提交,我将其应用于master。

运行良好,只有问题是提交被标记为第一次小提交的时间。这是有意义的,因为这是唯一被“挑选”的提交,其余的被“压扁”。任何人都知道如何使用最后一次小提交的时间而不是第一次提交集总提交?有可能通过“编辑”最早的提交并将后来的提交压缩到此提交(我可能会编辑时间属性)来实现,但是有更好的方法吗?

2 个答案:

答案 0 :(得分:5)

如果您不能重新排列提交以选择具有所需日期的提交(例如,因为最后一次提交不会在第一次提交的父级上面干净地应用),那么您可以尝试以下方法。

如果您已将 develop 提交压缩到 develop 上的单个提交中,那么您可以使用git show develop 提取原始最终提交的日期(压缩之前),然后使用git commit --date=修改新提交的日期。

git commit --amend -C HEAD --date="$(git show --pretty=format:%ad develop@{1})"

这修改了(--amend)HEAD提交以便

  • 它有来自HEAD的提交消息和日期,
    -C HEAD;使用此方法可以避免启动提交消息的编辑器,只是立即退出而不进行任何更改;如果您确实要编辑提交消息以及更改日期,请将此部分保留为关闭状态。
  • 其日期是
    --date=
    • 开发的最近一次提示相同的日期 ("$(git show --pretty=format:%ad develop@{1})")。

如果develop@{1}没有您想要的日期,那么您可以使用git log -g develop查找具有所需日期的提交。

答案 1 :(得分:4)

对提交进行重新排序,以便具有您要保留的时间戳的提交是pick编辑的提交,然后是squash其他所有内容。