問題

私のマスターブランチ内では、ローカルでgit merge some-other-branchを実行しましたが、オリジンマスターに変更をプッシュしたことはありませんでした。私はマージするつもりはなかったので、元に戻したいと思います。マージ後にgit statusを実行すると、次のメッセージが表示されました。

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

いくつかの命令に基づいて、私はを見つけました。

 git revert HEAD -m 1
 

しかし、今私はgit statusでこのメッセージを受け取っています:

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

私は自分のブランチを任意の数のコミットで先に進ませたくありません。その時点に戻るにはどうすればよいですか?

  ベストアンサー

git reflogでは、どのコミットがマージの前のものであるかを確認します(git refloggit logよりも優れたオプションになります)。次に、

 git reset --hard commit_sha
 

別の方法もあります:

 git reset --hard HEAD~1
 

それはあなたが1コミットを取り戻すでしょう。

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


@Velmontが彼の答えで以下に示唆したように、この直接的なケースでは、

 git reset --hard ORIG_HEAD
 

変更を保持する必要があるので、より良い結果が得られるかもしれません。 ORIG_HEADは、マージが発生する直前にコミットを指します。


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

 git reset --merge ORIG_HEAD
 

- マージ

インデックスをリセットし、作業ツリー内のファイルを更新します。

  同じタグがついた質問を見る

gitundogit-merge