git rebase origin/development "の最中に、Gitから以下のエラーメッセージが表示されました。
fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
私のGitのバージョンは2.9.0です。以前のバージョンでは問題なく動作していました。
新しいリリースで導入された強制フラグを使って、無関係な歴史を許可するリベースを続けるにはどうしたらいいですか?
Git 2.9からデフォルトの動作が変わりました。
git merge" は、デフォルトでは共通のベースを持たないふたつのブランチをマージすることができました。 これでは、既存のプロジェクトに新たな歴史が生まれてしまいます。 そのため、既存のプロジェクトに新しい歴史ができてしまい、何も知らないメンテナに引き抜かれてしまうことがありました。 そのため、既存のプロジェクトにまったく新しい履歴が作成され、何も知らないメンテナに引き抜かれてしまいました。 これにより、既存のプロジェクトに不要なパラレルヒストリーがマージされてしまいます。コマンドはデフォルトでは許可しないように教えられています。 デフォルトでは**許可しないように指導していますが、稀にこのような事態が発生した場合に使用するエスケープハッチの
--allow-unrelated-histories
オプションもあります。 これは、独立してスタートした2つのプロジェクトの履歴がマージされるような稀なケースで使用されます。 オプションを使用します。
詳細はGit release changelogを参照してください。
allow-unrelated-histories`を使えば、強制的にマージを行うことができます。
私の場合は、特にGitリポジトリをリモートで追加した後の最初のプルリクエストで、毎回「fatal: refusing to merge unrelated history」というエラーが出ていました。
allow-unrelated-histories` フラグを使用すると、このようにプルリクエストが動作しました。
git pull origin branchname --allow-unrelated-histories