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

46a*_*nd2 2 git rebase git-rebase

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

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

Chr*_*sen 5

如果您不能重新排列提交以选择具有所需日期的提交(例如,因为最后一次提交将不会完全应用于第一次提交的父级),那么您可以尝试以下方法.

如果您在挤成一团发展提交到一个单一的提交上开发,那么你可以使用git show和引用日志的制定来提取原始最终的提交日期(挤压之前),然后修改与新提交的日期git commit --date=.

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

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

  • 它有来自HEAD的提交消息和日期,
    (-C HEAD;使用它可以避免启动提交消息的编辑器,只是为了立即退出而不做任何更改;如果你真的想要编辑提交消息以及更改日期)
  • 它的日期是
    (--date=)
    • 与最近的开发先前
      ("$(git show --pretty=format:%ad develop@{1})")相同的日期.

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

  • 重新排序让我觉得可能经常失败,因为被压扁的承诺经常触及相同的内容,而将最后一个放在首位可能会导致冲突.这对我来说似乎是一个更有用的答案!(1) (2认同)