git squash并保留最后一次提交的时间戳

Cre*_*ing 22 git

考虑我有提交

... -- A -- B -- C
Run Code Online (Sandbox Code Playgroud)

如果我用来git rebase -i将所有三个提交压缩成一个,我们就可以

pick A
squash B
squash C
Run Code Online (Sandbox Code Playgroud)

我看到结果提交A有其原始时间戳.怎么能让它继承提交的时间戳C(最后一个)?

我能想到的是git commit --amend --date=<new_time>,但这种方式需要C在壁球之前或从reflog中记住提交的时间戳.

我发现最新提交的时间戳更合理,因为它显示了我实际完成提交中的工作的时间.

谢谢.

Ric*_*sen 12

这不是一个简单的方法,但有一些选择.这是一个:

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

而另一个:

git commit --amend -c <sha1-of-C>
Run Code Online (Sandbox Code Playgroud)

后者将破坏您现有的提交消息,因此您必须重写它.


nos*_*nos 5

git commit --amend --reset-author

  • 这不使用 C 中的时间戳,而是使用当前时间作为时间戳。 (4认同)
  • 这并不完全符合OP的要求,但(至少在我看来)更符合通常想要的。 (2认同)