Web制作

Git mergeの取り消し|revertとの違いも解説

アイキャッチ画像 Web制作

Git操作を正しく覚えたい方へ

「Git mergeの取り消し方を知りたい」そんなあなたに向けて、この記事ではmergeのやり直し方法やrevertとの違いをわかりやすく解説します。

この記事はこんな人にオススメ!

・Git mergeを間違えて戻したい方
・revertとの違いがわからず困っている方
・安全な取り消し方法を学びたい方

「どの方法を使えばいいの?」「初心者でも大丈夫?」と不安な方でも大丈夫。
手順について詳しくご紹介していきます。

Git mergeとは?まずは基本をおさらい

Git mergeの役割とよくある利用シーン

Git mergeは、2つのブランチの履歴を統合するために使用される基本操作です。
開発ブランチとmainブランチを合流させるときなど、頻繁に使われます。

主な利用シーン

  • 機能開発ブランチをmainに統合したいとき
  • チームメンバーの作業をまとめるとき

間違えやすいポイントとは?

mergeには、実は複数の挙動があります。

特に初心者がつまずきやすいのが、fast-forwardno-ffの違いです。

fast-forwardとno-ffの違い
  • fast-forward:履歴をそのまま進めるだけ。履歴がスッキリします。
  • no-ff:マージコミットが生成され、履歴が明確に残るのが特徴。

Git mergeを取り消す3つの方法

1. git resetで履歴ごと取り消す

--soft・--mixed・--hardの違いと使い分け
  • --soft:コミットだけ取り消す(ステージ済み)
  • --mixed:ステージも取り消す(ファイルはそのまま)
  • --hard:すべて取り消す(完全に元に戻す)

2. git reflogで元の状態に戻す

reflogを使えば、過去の状態を一覧で確認して、任意の時点へ戻ることができます。誤操作後でも柔軟に対応可能です。

3. git revertで変更を打ち消す(履歴は残す)

履歴を残したまま、特定のコミットの影響だけを取り消したいときに便利です。特にチーム開発ではこの方法が安全です。

revertとの違いをわかりやすく解説

revertは「履歴を打ち消す」操作

履歴には残しつつ、マージなどの変更を「逆の差分」で取り消します。ログに「revert: …」と記録されるため、後からも追跡できます。

resetは「履歴をなかったことにする」操作

完全に履歴ごと削除します。個人のローカルで使うなら有効ですが、共有リポジトリでは注意が必要です。

チームで作業中はrevertが安全な理由

resetは「履歴をなかったことにする」ため、他のメンバーの作業と不整合が生じやすくなります。安全に取り消したい場合はrevertを選びましょう。

よくあるGit merge取り消しの4つのケース

ケース1:マージ中にコンフリクトが起きたけど、やっぱりやめたい!

マージ中に予期せぬコンフリクトが発生して、まだ何も編集していない場合は以下でキャンセルできます。

git merge --abort

ポイント: 編集前であれば、このコマンド1つでマージ前の状態に戻せます。

ケース2:コンフリクト解消後にやっぱりマージをやめたい…

編集を加えてしまった後でも、マージ自体をキャンセルしたい場合は下記でOK。

git reset --hard HEAD

ポイント: 編集とマージ作業をまとめて取り消したいときに便利です。

ケース3:マージ後に「やっぱやめたい」→revertで対応

マージコミットまで完了したあとに「やめたい」となった場合、以下のコマンドで履歴を保ったまま変更を打ち消せます。

git revert -m 1 <merge_commit>

-mの数字で「親ブランチ」がどちらかを指定する必要があります。

注意点: 一度revertしたマージコミットと同じ内容を、再びマージすることはできなくなります。

ケース4:マージ後に完全に履歴ごと消したい

履歴も含めて完全に取り消したい場合はresetで対応します。

git reset --hard ORIG_HEAD

注意: これはコミット履歴ごと削除されるため、push済みの履歴に対して使うと他の開発者に影響を及ぼします。ローカル限定で使うようにしましょう。

取り消し操作の注意点とトラブル回避

共同作業中にresetを使うべきでない理由

共有リポジトリではresetは慎重に。履歴改変が他の人の作業を壊す可能性があります。

作業前にgit statusgit logを確認する習慣

操作ミスを防ぐ第一歩は「今どんな状態か?」を確認することです。

操作ミスを防ぐための練習法

練習用のブランチやリポジトリで実験するのがオススメです。怖がらずに練習してみましょう。

まとめ|状況に応じて正しく取り消そう

今回紹介した3つの方法を振り返り

  • reset:完全に戻す(注意が必要)
  • reflog:自由度が高い履歴戻し
  • revert:安全な取り消し(履歴を残す)

「revert or reset」判断のコツ

  • チームで共有しているならrevert
  • ローカル作業のみならresetもOK

安心してGit操作を続けるために

トラブルがあっても、正しい知識があれば大丈夫です。ぜひ本記事をブックマークして、困ったときの参考にしてください。

コメント

タイトルとURLをコピーしました