28

私がコミットしていると考えてください

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

git rebase -i3つのコミットすべてを1つに押しつぶすために使用すると、次のことが可能になります。

pick A
squash B
squash C

結果のコミットAには元のタイムスタンプがあることがわかります。Cコミットのタイムスタンプ(最後のタイムスタンプ)をどのように継承させることができますか?

私が考えることができるのはですが、この方法では、スカッシュ前またはreflogからgit commit --amend --date=<new_time>のコミットのタイムスタンプを覚えておく必要があります。C

最新のコミットのタイムスタンプは、コミット内の作業が実際にいつ終了したかを示しているため、より合理的であることがわかりました。

ありがとう。

4

2 に答える 2

19

これを行うための簡単な方法はありませんが、いくつかのオプションがあります。これが1つです:

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

そして別の:

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

後者は既存のコミットメッセージを壊してしまうので、書き直す必要があります。

于 2012-04-05T00:35:48.897 に答える
5

git commit --amend --reset-author

于 2016-12-08T15:00:23.343 に答える