1

私はgitに次の歴史を持っています

A-B-C-D-E-F

コミット E で行った変更をロールバックしたいのですが、コミット F で行った変更が必要でしたgit rebase

git rebase -i D

コミットFのみを選択し、コミットEを無視しました。私の履歴は次のようになります

A-B-C-D-F

しかし、私がやりたいことは、コミット E で行われた変更をロールバックすることですが、E が追加されてから削除されたことを履歴に保持します。このようなもの

A-B-C-D-E-F-E1

E1 は、コミット E によって行われた変更を元に戻すコミットです。

gitでそれを行う方法は?

4

3 に答える 3

4

git revert $SHA_FOR_E新しいコミットをコミット E の「反対」にします。

マニュアルページから

1 つ以上の既存のコミットがある場合、関連するパッチが導入した変更を元に戻し、それらを記録するいくつかの新しいコミットを記録します。

于 2013-05-06T15:04:15.620 に答える
2

rebase私は行く方法ではないと思います。私の最初の提案は、元に戻すことです

git revert E

これにより、 E が適用されたことを元に戻す新しいコミットが作成されます

別のオプションは、パッチを逆にすることです。

git show E | patch -R -p1 && git commit .

で行われたことを元に戻しEます。

于 2013-05-06T15:06:29.820 に答える
2

revert コマンドを使用します。これにより、提供された SHA の逆であるというコミットが作成されます。

git revert <SHA E>

于 2013-05-06T15:04:47.780 に答える