fatal: refusing to merge unrelated histories
Gitで共通の履歴を持たないブランチをマージしようとした際のエラー
概要
Gitで共通のコミット履歴を持たない2つのブランチをマージしようとした際に発生するエラーです。Git 2.9以降、安全のためデフォルトでこのマージは拒否されます。
エラーメッセージ
fatal: refusing to merge unrelated histories
原因
- 別々に作成したリポジトリ: ローカルとリモートで別々に初期化
- GitHub上でREADMEを作成: リポジトリ作成時にREADME.mdを追加
- orphanブランチ:
--orphanオプションで作成したブランチ - リベース後の履歴不整合: 強制プッシュ後の履歴の断絶
- 異なるプロジェクトの統合: 2つの別プロジェクトを1つにまとめる
解決策
1. –allow-unrelated-historiesオプション
| |
2. リベース時
| |
3. 新規リポジトリの正しい手順
| |
4. 既存リポジトリにREADMEがある場合
| |
5. リモートの内容を優先する場合
| |
6. ローカルの内容を優先する場合(危険)
| |
7. サブツリーとしてマージ
| |
コンフリクト解決
| |
よくある間違い
- GitHubでリポジトリ作成時に「Add a README file」をチェックしてしまう
--forceで強制プッシュしてリモートの履歴を消す- コンフリクト解決せずにコミットしようとする
関連エラー
参考リンク
Git の他のエラー
この記事は役に立ちましたか?