【Git初心者の失敗談】README更新時にマージでつまずいた話と、その対処法
こんにちは、miyoshiです。
今回は、READMEをちょっと直してGitHubにpushしたかっただけなのに、思いがけずマージやコンフリクトに巻き込まれてしまったという失敗談を共有します。
同じようにGitの操作でつまずいたことがある方の参考になれば嬉しいです!
この記事は続きの話です。
モニター開発のリアル】「すごい!早く使ってみたい!」と言われた日。エンジニアとしての醍醐味を感じた話
✅ やりたかったこと
自作アプリのREADMEに、以下の内容を追加したかっただけです。
- 「スタンプ機能」に関する追記
やったコマンドはこちら:
git add README.md
git commit -m "Update README: スタンプ機能の概要を追加"
git push origin main
❌ 起きたエラー
error: failed to push some refs to 'https://github.com/ユーザー名/リポジトリ名.git'
hint: Updates were rejected because the tip of your current branch is behind
原因:
GitHub上のmainブランチには、自分のローカルにはないコミットが3つ存在していて、pushが拒否されました。
🧯 一旦落ち着こう!!!!!
🔹 ① 最新状態をpullしようとしたら、、、
git pull origin main
しかし、ここでも以下のような警告が出ました。
fatal: Need to specify how to reconcile divergent branches.
🔹 ② 明示的に「マージ」と指定してpull
git pull --no-rebase origin main
これでGitHub側の変更をマージしようとしたところ…
⚠️ ③ コンフリクト発生!
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
README.md に以下のような記号が出てきます:
<<<<<<< HEAD
自分の変更
=======
リモートの変更
>>>>>>> main
🧯 一旦落ち着こう!!!!!
✅ ④ 正しい内容だけを残して保存
マークを削除し、自分にとって正しいREADMEの状態を反映させて保存します。
✅ 最後に再push!
git push origin main
📝 まとめ:今回の失敗から学んだこと
push で拒否された
ローカルとリモートの差分をpullで解消しよう
pull時にエラー
--no-rebase や --rebase など明示しよう
コンフリクトに焦った
<<<<<<< などのマークは慣れれば怖くない
🙌 最後に
小さなREADME更新でも、Gitの理解が浅いと意外とつまずくことがあります。でも、失敗したからこそ身につくこともたくさん!
同じようなことで悩んでいる方の参考になれば幸いです。