Fatal: Refusing to Merge Unrelated Historys Error in Git

John Wachira 2023年6月20日
  1. Git での致命的: 無関係な履歴のマージを拒否するエラーの一般的なシナリオ
  2. Git の fatal: refusing to merge unrelated historys エラーを解決する
Fatal: Refusing to Merge Unrelated Historys Error in Git

この記事では、Git の致命的: 無関係な履歴のマージを拒否していますというエラーを解決するために必要な手順の概要を説明します。 通常、関連のない 2つの Git プロジェクトを 1つのブランチにマージしようとすると、このようなエラーが発生します。

受信者ブランチにコミットがあり、クローンに互換性のないタグがある場合にポップアップします。

Git での致命的: 無関係な履歴のマージを拒否するエラーの一般的なシナリオ

Git で fatal: refusing to merge unrelated historys エラーが発生する可能性が高いいくつかのケースを次に示します。

  1. コミットを含むローカル リポジトリがあり、既存のリモート リポジトリからプルしようとしています。 歴史が違うので、Gitはどう進めばいいのかわからない。

    したがって、エラーメッセージ。

  2. .git ディレクトリが破損しています。

  3. ブランチが異なる HEAD 位置にある場合。

Git の fatal: refusing to merge unrelated historys エラーを解決する

無関係なマージを許可することで、エラーを解決できます。 以下に示すように、プルリクエストに --allow-unrelated-history フラグを追加することでこれを行うことができます。

$ git pull origin master --allow-unrelated-histories

Git では、関係のない履歴を持つブランチをマージできます。 ファイルが競合しない場合は、非常に簡単です。

上記の方法が最も簡単です。 ただし、同じ目的地へのより長いルートがあります。

まず、現在のすべてのコミットをアンステージして隠しておく必要があります。 その後、リモート リポジトリからプルして、スタッシュを新しいクローンに適用できます。

これにより、マージの競合が発生した場合に対処しやすくなります。

最後のコミットのすべてのファイルのステージングを解除するには、次のコマンドを使用します。

$ git reset HEAD~

以下のコマンドを実行して、ファイルをスタッシュします。

$ git stash

これで、クリーンな作業ツリーができました。プル リクエストを実行できます。その後、スタッシュを解除して、スタッシュされた変更を作業ツリーに適用します。 以下を実行できます。

$ git stash pop

上記のコマンドは、スタッシュを適用して破棄します。 スタッシュを適用して保持したい場合は、次を実行できます。

$ git stash apply

そうは言っても、このエラー メッセージを回避する最も簡単な方法は何ですか?

コミットを含むローカル ブランチにリモート リポジトリをプルすることは避けてください。 必要に応じて、新しいブランチを作成し、変更を手動でプルしてマージします。

結論として、別のコミット履歴を持つブランチをマージしようとすると、fatal: refusing to merge unrelated historys エラーが発生します。 エラーを解決する 2つの方法と、それを回避する最善の方法を説明しました。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Error