はじめに:Gitのコンフリクト、怖すぎませんか?
Gitで「Conflict(衝突)」の文字が出た瞬間、心臓がバクバクして冷や汗が止まらなくなった経験はありませんか?
「自分の書いたコードが消えてしまうかもしれない」「チームの共有リポジトリを壊してしまったらどうしよう」と、頭の中が真っ白になりますよね。実は、30代でフリーランスとして年収800万を稼いでいる私、shiroも、駆け出しの頃はコンフリクトが起きるたびにトイレに逃げ込みたくなるほど怯えていました。
でも、安心してください。コンフリクトはプログラムが「どっちのコードを残せばいいか分からないから、人間が決めてね」と教えてくれているだけの日常茶飯事なイベントです。仕組みさえ分かれば、決して怖いものではありません。
ただし、焦って間違ったコマンドを叩くと、本当に取り返しのつかない大惨事になります。そこで今回は、コンフリクトが起きたときに「絶対にやってはいけないNG行動」を5つ紹介します。安全に切り抜ける方法も合わせて解説するので、ブックマークして困ったときに読み返してくださいね。
コンフリクト時に初心者が絶対にやってはいけない5つのNG行動
焦っているときほど、キーボードを叩く手が滑って怪しいコマンドを実行しがちです。ここからは、絶対に避けるべきNG行動を具体的に解説します。
1. git push -f(強制プッシュ)で無理やり上書きする
一番やってはいけないのが、この強制プッシュです。ローカルの解決が面倒だからと、このコマンドで強引にリモートへ送り込む人がいるんですよね。でも、これを叩いた瞬間、他人が書いた最新のコードがすべて消え去ります。
要するに、チームメンバーが寝る間も惜しんで書いた数日分の努力を、一瞬でゴミ箱に捨てるようなものです。朝出社して自分のコードが消えていたら、チーム全体がパニックになりますよね。これだけは、どんなに追い詰められても実行してはいけません。
- 発生する最悪のシナリオ: メンバーの進捗が吹き飛び、プロジェクト全体のスケジュールが遅延する。
- 対策: 自分のローカル環境だけで解決し、普通にプッシュできる状態を目指しましょう。
2. git checkout . で変更をすべてリセットする
「一旦全部なかったことにしたい!」と思って、変更をリセットするコマンドを実行するのも危険です。これを叩くと、あなたがこれまで頑張って書いてきた未コミットのコードが、文字通りすべて消滅します。ゴミ箱にも残らないため、二度と復元できません。
せっかく3時間かけて実装したバグ修正が、一瞬の気の迷いで無に帰すのは悲しすぎますよね。私も昔、このコマンドで1日分の作業を失い、深夜のオフィスで涙目になりながらコードを書き直したことがあります。あの絶望感は、他の誰にも味わってほしくありません。
- デメリット: 未保存のコードが完全に消え去り、バックアップも取れない。
- 対策: まずは現在の変更を「git stash」で一時退避させる習慣をつけましょう。
3. git reset –hard で履歴を完全に巻き戻す
過去の正常な状態に戻そうとして、このコマンドを実行するのも初心者が陥りがちな罠です。この「–hard」というオプションは、名前の通り強力で破壊的。コミット済みの履歴まで強制的に削除してしまいます。
仕組みはシンプルで、指定したコミット以降の変更を「すべてなかったこと」にします。コンフリクトのイライラから解放されたくて使いたくなりますが、チームの開発履歴まで壊すリスクがあるため、原則として共有ブランチでは使用禁止です。
- 危険性: 戻したい場所を1行間違えるだけで、関係ないコミットまで消してしまう。
- 推奨されるアプローチ: 履歴を残したまま戻せる「git revert」を使いましょう。
4. 手動でコンフリクトマーカーを適当に消す
コード内に表示される「<<<<<<< HEAD」や「=======」、「>>>>>>>」といった記号。これを「コンフリクトマーカー」と呼びます。コンフリクトを解決するには、この記号で挟まれた部分のどちらを残すか選ばなければなりません。しかし、中身をよく理解しないまま、エラーを消したい一心でこの記号だけを適当に削除してしまう人がいるんですよね。
これをやると、構文エラーが発生してアプリが起動しなくなったり、二つの異なる機能が中途半端に混ざり合って、謎のバグを埋め込む原因になります。要するに、バグの爆弾を自ら仕込んでいるようなものです。
- よくあるミス: どちらのコードが必要かを確認せず、自分の直感だけで消してしまう。
- 正しい手順: 変更を加えた本人と連絡を取り、どちらの記述が正しいか必ず相談すること。
5. 誰にも相談せずに無理やりマージを完了させる
「怒られたくないから、自分でこっそり直してしまおう」という心理はよく分かります。私も昔は、自分のミスを隠したくて必死に一人で解決しようとしました。でも、Gitの履歴にはすべてがバッチリ記録されているのです。
誰のコードと衝突しているのかを確認せず、勝手にマージを進めると、後から必ず問題が発覚します。結果として、原因究明に余計な時間がかかり、チーム全体に迷惑をかけることになります。ミスを隠そうとする行動が、一番信頼を失う原因になるのです。
コンフリクトが起きたときの正しい「3ステップ」対処法
では、目の前でコンフリクトが発生したら、どのように動くのが正解でしょうか?私がいつも実践している、最も安全なステップを紹介します。
ステップ1:まずは「git merge –abort」で時間を止める
パニックになったら、まずはこのコマンドを入力してください。これを行うことで、コンフリクトが発生する直前の、平和だった状態に一瞬で戻せます。
いったん時間を止めて、温かいお茶でも飲んで深呼吸しましょう。落ち着いてから、どのファイルを修正すべきか整理すればいいのです。
ステップ2:相手のコードを書いた人とコミュニケーションを取る
衝突している箇所を確認したら、そのブランチの作成者に「今、ここのコードでコンフリクトしちゃったんだけど、どっちを残せばいいかな?」と Slack や口頭で確認しましょう。これが一番確実で、一番早い解決策です。
エンジニアは冷たい人が多いと思われがちですが、事前に相談されて嫌がる人はいません。むしろ、勝手に直されてバグを出される方が100倍嫌がられます。勇気を出して、一言声をかけてみてくださいね。
ステップ3:VS Code などのエディタの支援機能を使う
手動でテキストを書き換えるのではなく、モダンなエディタの機能をフルに頼りましょう。VS Code であれば、「現在の変更を取り込む」「入力側の変更を取り込む」といったボタンが画面上に表示されます。
クリック一つで安全にコードを選択できるため、タイポなどの凡ミスを完全に防ぐことができます。便利な道具は、トコトン使い倒すのがプロのやり方です。
まとめ:今の環境で「Gitすら怖い」と悩んでいるあなたへ
Gitの操作でビクビクしてしまうのは、あなたの技術力がないからではありません。単に、失敗したときのフォロー体制や、気軽に相談できる先輩が周りにいない「環境の問題」であることがほとんどです。
もし今の職場で、「ミスしたら怒られる」「誰もGitの使い方を教えてくれない」と孤独を感じているなら、それはもっとエンジニアとして成長できる環境へ移るサインかもしれません。私もかつては、独りで悩んでばかりの冴えない会社員でした。でも、思い切ってフリーランスとして独立し、風通しの良い開発現場に入ったことで、年収もスキルも一気に跳ね上がりました。
今の環境に漠然とした不安があるなら、まずは一歩、外の世界を覗いてみませんか?あなたが思っている以上に、あなたのスキルを求めている場所はたくさんありますよ。焦らず、自分のペースで進んでいきましょう。
👉 今すぐ無料相談する

コメント