コミットに変更を加えると、ツリーは次のようになります。
(A) - (B) - (C) - (D)
\
(B')
必要なことは、変更CとDを変更B 'にリベースします。それは簡単にできます。
git rebase B' D
それはそれが次のようになります
(A) - (B) - (C) - (D)
アップデート:
これをより明確にするためだけに。OPの手順に従ってから、git commit --amend
私が言及したことを実行する必要があります。したがって、ワークフロー全体は次のようになります
git checkout B
<make changes>
git commit --amend
git rebase B' D
更新 2:
@gtrig は別の回答で良い点を指摘しました。これは履歴の書き換えであるため、既に別のリポジトリにプッシュしている (または他の誰かがプルしている) 場合、これは非常に悪い考えでありgit revert
、以前の変更を元に戻す新しい変更を行うために使用する必要があります。これにより、履歴が見苦しくなりますが、他の人のリポジトリが台無しになることはありません。これは、リモートにプッシュされる前のローカルの変更のみです。