Git: マージを中止する
最終更新
git merge が競合に遭遇し、それらを解決するよりも引き返したい場合、git merge --abort はマージをキャンセルし、ブランチを開始前とまったく同じ状態に復元します。おかしくなったマージからの安全な脱出口です。
すでに完了したマージは別の方法で取り消します - 下記を参照してください。これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルです。
構文
| Command | What it does |
|---|---|
git merge --abort | 競合したマージをキャンセルし、マージ前の状態に復元する |
git reset --merge | 古い同等の方法 - マージを中止してリセットする |
git merge --quit | マージから抜けるが、作業ツリーはそのまま保持する |
すでに完了したマージを取り消す
中止とは異なる - マージコミットはすでに存在する。
| Situation | Command |
|---|---|
| マージはローカルで、プッシュされていない | git reset --hard ORIG_HEAD |
| マージはすでにプッシュされている | git revert -m 1 <merge-hash> |
Git マージ中止に関するFAQ
進行中のマージをキャンセルするには?
git merge --abort を実行します。競合のためにマージが停止し、それらを解決したくない場合、これは操作全体をキャンセルし、ブランチと作業ツリーをマージ開始前とまったく同じ状態に戻します。git merge --abort と git reset --merge の違いは?
両者は本質的に同じ仕事をします - 進行中のマージをキャンセルし、マージ前の状態を復元します。
git merge --abort は現代的で、この目的のために作られたコマンドです。git reset --merge は今でも動作する古い方法です。分かりやすさのために git merge --abort を優先してください。すでに完了したマージを取り消すには?
マージコミットがすでに存在するため、これは中止ではありません。マージがローカルのみの場合、
git reset --hard ORIG_HEAD がブランチをマージ前の位置に戻します - HEAD~1 では正しく戻れない fast-forward の後でも機能します。コミットしていない作業は破棄されるので、先に git status を確認してください。すでにマージをプッシュしている場合は、git revert -m 1 <merge-hash> を使って、共有された履歴を書き換えずにマージを打ち消します。マージを中止すると他の変更が失われますか?
git merge --abort はマージ直前の状態を復元するため、マージの変更は破棄されますが、自分自身のコミット済みの作業はそのまま残ります。マージを開始する前にコミットしていない変更があった場合は、先にコミットするか stash してください - 中止はマージ前のコミット状態を復元します。これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開いて、ブラウザ内の本物のシェルで
git merge --abort を実行できます - インストールは不要です。Coddy の無料のインタラクティブな Git コースでは、マージと競合の解決も段階的に扱っています。