まだプッシュされていない Git マージを元に戻す 質問する

まだプッシュされていない Git マージを元に戻す 質問する

誤ってgit merge some_other_branchローカルのマスター ブランチで実行してしまいました。変更を元のマスターにプッシュしていません。マージを元に戻すにはどうすればいいですか?


合併後、git statusこう言います。

# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.

これらすべてのコミットを元に戻すにはどうすればいいでしょうか?

ベストアンサー1

git reflogマージの 1 つ前のコミットがどれかを確認すると、git reflogよりも のほうが良いオプションになりますgit log。その後、次のコマンドを使用してリセットできます。

git reset --hard commit_sha

別の方法もあります:

git reset --hard HEAD~1

コミットが 1 つ返されます。

変更されたファイルやコミットされていない/スタッシュされていないファイルは、変更されていない状態にリセットされることに注意してください。変更を保持するには、変更をスタッシュするか、--merge以下のオプションを参照してください。


@Velmont が以下の回答で示唆しているように、この直接的なケースでは以下を使用します。

git reset --hard ORIG_HEAD

変更が保持されるため、より良い結果が得られる可能性があります。ORIG_HEADマージが発生する前のコミットを直接ポイントするため、自分で探す必要がありません。


さらにヒントとしては--merge、 の代わりに スイッチを使用することです--hard。これにより、不必要にファイルがリセットされなくなります。

git reset --merge ORIG_HEAD

- マージ

インデックスをリセットし、<commit> と HEAD の間で異なる作業ツリー内のファイルを更新しますが、インデックスと作業ツリーの間で異なるファイル (つまり、追加されていない変更があるファイル) は保持します。

おすすめ記事