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

时间:2012-04-04 23:24:32

标签: git

考虑我提交

... -- A -- B -- C

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

pick A
squash B
squash C

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

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

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

感谢。

2 个答案:

答案 0 :(得分:12)

没有一种简单的方法可以做到这一点,但有一些选择。这是一个:

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

另一个:

git commit --amend -c <sha1-of-C>

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

答案 1 :(得分:5)

git commit --amend --reset-author