0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハッカソン個人備忘録③:Git pull時のエラーを解決!ローカルとリモートの分岐に対応メモ

Last updated at Posted at 2025-04-06

はじめに

Git で pull を使ってリモートの変更を取り込もうとした際、「divergent branches」というエラーが発生することがあります。

このエラーは、ローカルとリモートのブランチの履歴が食い違っている場合に起きるもので、原因を理解して正しく対処しないと意図しない履歴の破壊などにつながる可能性もあります。

この記事では、このエラーの発生原因と対処方法について、わかりやすくまとめます。

書こうと思ったきっかけ

チーム開発中に Git の pull 操作を行ったところ、「Need to specify how to reconcile divergent branches」というエラーに遭遇しました。

最初は何が起こっているのか分からず戸惑いましたが、調べてみるとこのエラーはリモート側で強制プッシュ (git push --force) が行われた場合などに発生しやすいことが分かりました。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

同じように困っている人の助けになればと思い、この記事を書くことにしました。

Git Pull 時に発生した "divergent branches" エラーの対処法

背景

以下のような git pull 実行時にエラーが発生しました:

 ~/Desktop/next-app  (git)-[main]-  git pull origin main
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
...
fatal: Need to specify how to reconcile divergent branches.

原因

ローカルとリモートの main ブランチが分岐しており、Git がそれらをどのように統合すべきか明示的な指示が必要だったためです。

ログに記載されていた以下の行:

+ f0d04b6...0dd3570 main -> origin/main  (forced update)

これは リモートブランチが強制的に上書きされた(git push --force された) ことを意味しています。


解決方法①:マージで統合したい場合

git pull --no-rebase

今後も毎回マージで統合したいなら:

git config pull.rebase false

解決方法②:リベースで統合したい場合

git pull --rebase

今後もリベース方式で統合したいなら:

git config pull.rebase true

解決方法③:fast-forward のみ許可したい場合

git pull --ff-only

ローカルをリモートに合わせて強制的に上書きしたい場合(⚠️注意)

git fetch origin
git reset --hard origin/main

⚠️ この操作をすると、ローカルの未コミット変更や独自のコミットはすべて消えます。


まとめ

  • git pull の挙動は明示的に指定する必要があることがある
  • --rebase を使えば履歴がきれいになりやすい
  • リモートが強制更新されていた場合は特に注意が必要
  • 安全に進めるならまず git pull --rebase を試すのがおすすめ

Git のエラーは最初こそ戸惑いますが、仕組みを理解していれば冷静に対処できます。履歴の扱いに慣れておくことで、より安心してチーム開発を進めることができると思いました!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?