Gitの「refusing to merge unrelated histories」の対処

結論を先に。共通の履歴を持たない2つのリポジトリを merge / pull しようとしたのが原因です。意図して統合するなら --allow-unrelated-histories を付ければ通ります。

fatal: refusing to merge unrelated histories

原因

別々に git init されたリポジトリ同士など、共通の祖先コミットが無いものを統合しようとすると、Git は安全のために止めます。例えば、すでにコミットのあるローカルに、別途作られたリモートを後から pull したときに起きます。

対処

  1. 意図して統合するなら、許可オプションを付ける。
git pull origin main --allow-unrelated-histories
  1. その後コンフリクトが出たら、ファイルを直して commit します。
git add .
git commit
  1. そもそも統合すべきでない(リモートを取り違えている)場合は、git remote -v で接続先を見直します。

まとめ

  • 原因は共通履歴を持たないリポジトリの統合
  • 意図的なら git pull --allow-unrelated-histories
  • コンフリクトは直して commit
  • 統合すべきでないなら git remote -v で接続先を確認する