My_pcc_branch.patchという特定のパッチがあります。
適用しようとすると、次のメッセージが表示されます。
$ git apply --check my_pcc_branch.patch
warning: src/main/Java/.../AbstractedPanel.Java has type 100644, expected 100755
error: patch failed: src/main/Java/.../AbstractedPanel.Java:13
error: src/main/Java/.../AbstractedPanel.Java: patch does not apply
どういう意味ですか?
この問題を修正するにはどうすればよいですか?
[email protected]メーリングリストのJohannes Sixtは、次のコマンドライン引数を使用することを提案しました。
git apply --ignore-space-change --ignore-whitespace mychanges.patch
これで私の問題は解決しました。
git apply --reject --whitespace=fix mychanges.patch
は私のために働いた。
このコマンドは、パッチを適用せずにパッチを適用し、*.rej
として不良ファイルを残します。
git apply --reject --whitespace=fix mypath.patch
あなたはそれらを解決する必要があります。解決したら実行:
git -am resolved
他のすべてが失敗したら、 git apply
の--3way
オプション を試してください。
git apply --3way patchFile.patch
--3way
[。ユーザーが解決する作業ツリー内のファイル。このオプションは--indexオプションを暗示し、--rejectおよび--cachedオプションと互換性がありません。
典型的な失敗例は、できる限り多くのパッチを適用し、通常はそうしますが、gitで競合する可能性があります。おそらくreject
の代替手段よりも1ステップ簡単です。
Windowsには「x」ビットの概念がないため、UNIXとWindowsのgitクライアントを混在させると、Windowsでのrw-r--r--
(0644)ファイルのチェックアウトがmsys POSIXレイヤーによってrwx-r-xr-x
( 0755)。 gitは、モードの違いがファイルのテキストの違いと基本的に同じであると見なしているため、パッチは直接適用されません。ここでの唯一の良いオプションは、core.filemode
をfalse
に設定することだと思います(git-config
を使用)。
以下に関連情報を含むmsysgitの問題を示します。 http://code.google.com/p/msysgit/issues/detail?id=164 (archive.orgの2013年12月3日のコピーに変更)
私の場合、そもそもパッチファイルを誤って作成するほど愚かでした。実際には間違った方法で差分をとるです。まったく同じエラーメッセージが表示されました。
マスター上でgit diff branch-name > branch-name.patch
を実行すると、発生するすべての追加を削除しようとします(逆の場合も同様です)。
必ずブランチにチェックアウトしてgit diff master > branch-name.patch
を実行してください
このリンク を見つけました
私はこれがなぜ機能するのか分かりませんが、多くの回避策を試しましたが、これが私のために働いた唯一のものです。つまり、以下の3つのコマンドを実行します。
git fsck --full
git reflog expire --expire=now --all
git gc --Prune=now