git pushできない・コンフリクトが解決できない時の対処法|原因別にやさしく解説

「よし、コードができた!」とgit pushしたら、赤い文字で「rejected」——。

あるいは、pullした瞬間に「CONFLICT(コンフリクト)」の文字が出て、手が止まってしまった。

Gitを使い始めると、pushできない・コンフリクトが解決できないという壁に、多くの人がぶつかります。

この記事では、そんなときの対処法を原因別に、初心者にもわかりやすく解説します。

rejectedとかコンフリクトとか出ると、こわくて固まってまうねん…

目次

この記事の対象読者

  • git pushが拒否されて困っている
  • マージコンフリクトの直し方が分からない方
  • エラーが出ると固まってしまう、駆け出しの方
  • チーム開発でGitを使い始めた方

ケース1:git pushが「rejected(拒否)」される

もっとも多いのが、リモートに、自分がまだ持っていない変更があるケースです。

他の人(または別の自分)が先にpushしていると、そのままでは上書きになってしまうため、Gitが安全のために止めてくれます。

解決策は、先にリモートの変更を取り込んでから、あらためてpushすることです。

Bash
# リモートの変更を取り込む
git pull origin main

# あらためて push する
git push origin main
Bash

このpullのときに変更がぶつかると、次のコンフリクトが発生することがあります。

ケース2:認証エラーでpushできない

「Authentication failed」のように、認証で弾かれることもあります。

近年のGitHubなどでは、HTTPSでのパスワード認証は使えなくなっており、代わりに「パーソナルアクセストークン」や「SSH鍵」での認証が必要です。

パスワードの代わりにトークンを使うか、SSH鍵を登録して接続方法を切り替えると解決します。

設定手順はサービスによって異なるため、公式ドキュメントの案内に沿って進めるのが確実です。

ケース3:マージコンフリクトが起きた

コンフリクトは、同じファイルの同じ場所を、2人が別々に変更したときに起こります。

Gitが「どちらを採用すべきか自動で決められない」ため、人が判断してあげる必要があるのです。

あわてず、次の手順で解決しましょう。

手順①:衝突しているファイルを確認する

Bash
# どのファイルが衝突しているか確認する
git status
Bash

手順②:ファイルを開いてマーカーを直す

衝突した箇所には、次のような目印(コンフリクトマーカー)が入ります。

Bash
<<<<<<< HEAD
自分の変更(今いるブランチ)
=======
相手の変更(取り込むブランチ)
>>>>>>> feature-branch
Bash

このマーカーの行ごと消して、最終的に残したい内容だけに手で書き換えます

「自分の変更」「相手の変更」の両方を活かしたい場合は、うまく組み合わせて1つにまとめてもかまいません。

手順③:解決を記録する

編集し終えたら、addして記録すれば解決完了です。

Bash
# 解決したファイルを記録の対象に加える
git add ファイル名

# 解決を確定する
git commit
Bash

マーカーを消して残したい形にするだけなんや。思ったよりシンプルやん!

落ち着いて対処するコツ

コンフリクトは失敗ではなく、Gitが「確認して」と教えてくれているだけです。

こまめにpullして差を小さく保つ、小さな単位でコミットする、といった習慣で発生を減らせます。

Gitの基本操作をおさらいしたい方は、こちらもあわせてどうぞ。

まとめ

git pushの拒否は「先にpullしてから」、コンフリクトは「マーカーを直してadd・commit」が基本の流れです。

認証エラーは、トークンやSSH鍵への切り替えで解決できます。

どれも仕組みが分かれば怖くありません。あわてず、一つずつ片づけていきましょう。

コンフリクトは失敗ちゃう、って分かったら気がラクになったわ。ありがとう!

よくある質問

git push –force を使えば解決しますか?

強制pushはリモートの変更を上書きしてしまい、他の人の作業を消す危険があります。基本は使わず、まずgit pullで取り込んでからpushしましょう。共同開発では特に慎重に扱ってください。

コンフリクトのマーカーはそのままcommitしてもいいですか?

いけません。マーカーの行は必ず削除し、最終的に残したい内容だけにしてからadd・commitしてください。マーカーが残ったままだと、コードが正しく動かなくなります。

どちらの変更を残すか迷ったらどうすればいいですか?

判断に迷うときは、その箇所を書いた相手に確認するのが安全です。両方の意図を活かして1つにまとめる、という解決も選べます。

コンフリクトの解決をやめて元に戻せますか?

マージの途中であれば、中断して元に戻すこともできます。落ち着いて対応したいときは、いったん中断してから、あらためて取り組むのも一つの方法です。

そもそもコンフリクトを起こしにくくするには?

こまめにpullしてリモートとの差を小さく保ち、小さな単位でコミットするのが効果的です。同じファイルを複数人で同時に大きく編集しない工夫も役立ちます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次