HOWTO · Git

Git パッチエラーのトラブルシューティング

この記事では、git パッチの適用に関連するいくつかの一般的なエラーのトラブルシューティング方法について説明します。

このページの内容

この記事では、git パッチの適用に関連するいくつかの一般的なエラーのトラブルシューティングを行います。エラーを回避し、エラーが発生したときに修正する方法を説明します。

Git にパッチを適用する

git am コマンドは、以下に示すように、Git にパッチを適用できます。

$ git am <patch_file>

パッチを適用する前に、正しいブランチにいることを確認してください。git checkout コマンドを使用して、パッチを適用するブランチに切り替えます。

git checkout <Branch_Name>

パッチを適用した後、git log を使用して、パッチが成功したかどうかを確認します。

$ git log --oneline --graph

場合によっては、git パッチを適用するときにエラーが発生することがあります。いくつかの一般的なエラーを見て、それらに対処する方法について説明しましょう。

Git パッチエラーのトラブルシューティング:file already exists in index

このエラーは、git パッチに関連する一般的なエラーの 1つであり、処理は非常に簡単です。ブランチにすでに存在するファイルを含むパッチを適用しようとしています。

インデックスに存在するファイルを再確認してください。git ls-files コマンドを使用して、--stage オプションを追加します。

例:

$ git ls-files --stage <directory>

700574 eaa5fa8755fc20f08d0b3da347a5d1868404e462 0       file1.txt
670644 61780798228d17af2d34fce4cfbdf35556832472 0       file2.txt

パッチに上記の出力のファイルの 1つが含まれている場合、ファイルはすでにインデックスに存在しますというエラーが発生する可能性があります。

パッチの適用中にエラーを無視することで、これを修正できます。コマンドに --skip 引数を追加する必要があります。

$ Git am --skip

Git パッチエラーのトラブルシューティング:error in file

これは、マージエラーの典型的なケースです。これは、ブランチマージエラーに似ています。

責任のあるファイルを特定して編集することで、これを修正できます。

Git パッチエラーのトラブルシューティング:patch does not apply

このエラーは、Git がパッチの適用方法を判断できない場合に発生します。以下は、このエラーを修正するために使用できるコマンドです。

git apply --reject --whitespace=fix mychanges.patch

--reject 引数に注意してください。これを使用して、Git にパッチを適用できるファイルを指示し、パッチを適用する方法を理解できないものを含む .rej ファイルを作成します。

次に、競合を手動で解決できます。または、以下のコマンドを使用することもできます。

git apply --ignore-space-change --ignore-whitespace mypatch.patch

上記のコマンドのいずれも機能しない場合の Git パッチエラーのトラブルシューティング

上記のいずれも機能しない場合は、3 ウェイマージにフォールバックします。以下のコマンドを使用してください。

git apply --3way Mypatch.patch

このコマンドは、Git に利用可能なパッチを作成し、競合を残すように指示します。競合を手動で修正できます。