web-dev-qa-db-ja.com

競合を伴うgitマージを元に戻す方法

私は支店mybranch1にいます。 mybranch2mybranch1から分岐し、mybranch2に変更が加えられました。

それから、mybranch1にしている間に、私はgit merge --no-commit mybranch2をしました。それはマージ中に衝突があったことを示しています。

mybranch1が以前の状態に戻るように、すべてを破棄(mergeコマンド)したいのです。どうすればよいのかわかりません。

691
Anshul

最新のGit:

git merge --abort

これは作業コピーをマージ前の状態にリセットしようとします。これは、コミット前からコミットされていない変更を復元する必要があることを意味します。一般的に、とにかくコミットされていない変更とマージするべきではありません。

バージョン1.7.4より前:

git reset --merge

これは古い構文ですが、上記と同じです。

バージョン1.6.2より前

git reset --hard

コミットされていないマージを含む、コミットされていない変更をすべて削除します。上記のコマンドをサポートする新しいバージョンのGitでもこの動作が役に立つことがあります。

1203
Daniel Cassidy

実際、git merge --abortが存在する場合、git reset --mergeMERGE_HEADとのみ同等であることに注意してください。これは、マージコマンドのgitヘルプで読むことができます。

git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

マージに失敗した後、MERGE_HEADがない場合、失敗したマージはgit reset --mergeで元に戻すことができますが、必ずしもgit merge --abortではなく、同じものに対する古い構文と新しい構文のみ

個人的には、git reset --mergeが日常業務ではるかに有用であることがわかりました。

108
Martin G

最新のgitを使っていると仮定すると、

git merge --abort
102
Adam Dymitruk