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