リベース時に関係のない履歴のマージを拒否するGit

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`を使えば、強制的にマージを行うことができます。

解説 (6)

私の場合は、特にGitリポジトリをリモートで追加した後の最初のプルリクエストで、毎回「fatal: refusing to merge unrelated history」というエラーが出ていました。

allow-unrelated-histories` フラグを使用すると、このようにプルリクエストが動作しました。

git pull origin branchname --allow-unrelated-histories
解説 (10)

私もこれには苦労しましたが、なんとか回避策を見つけることができました。

上記のようなエラーが発生した場合、マージコミットをチェリーピックしてからリベースを続行してください。

git cherry-pick -m 1 1234deadbeef1234deadbeef
git rebase --continue
解説 (1)