web-dev-qa-db-ja.com

git:パッチは適用されません

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

どういう意味ですか?

この問題を修正するにはどうすればよいですか?

215
DP_

[email protected]メーリングリストのJohannes Sixtは、次のコマンドライン引数を使用することを提案しました。

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

これで私の問題は解決しました。

278
DP_

git apply --reject --whitespace=fix mychanges.patchは私のために働いた。

227
user1028904

このコマンドは、パッチを適用せずにパッチを適用し、*.rejとして不良ファイルを残します。

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

あなたはそれらを解決する必要があります。解決したら実行:

git -am resolved
46
Ivan Voroshilin

他のすべてが失敗したら、 git apply--3wayオプション を試してください。

git apply --3way patchFile.patch

--3way
[。ユーザーが解決する作業ツリー内のファイル。このオプションは--indexオプションを暗示し、--rejectおよび--cachedオプションと互換性がありません。

典型的な失敗例は、できる限り多くのパッチを適用し、通常はそうしますが、gitで競合する可能性があります。おそらくrejectの代替手段よりも1ステップ簡単です。

44
ruffin

Windowsには「x」ビットの概念がないため、UNIXとWindowsのgitクライアントを混在させると、Windowsでのrw-r--r--(0644)ファイルのチェックアウトがmsys POSIXレイヤーによってrwx-r-xr-x( 0755)。 gitは、モードの違いがファイルのテキストの違いと基本的に同じであると見なしているため、パッチは直接適用されません。ここでの唯一の良いオプションは、core.filemodefalseに設定することだと思います(git-configを使用)。

以下に関連情報を含むmsysgitの問題を示します。 http://code.google.com/p/msysgit/issues/detail?id=164 (archive.orgの2013年12月3日のコピーに変更)

13
Ben Jackson

ここで提案されているソリューションを使用してみてください: https://www.drupal.org/node/112912

patch -p1 < example.patch

これは私を助けた。

11
Pini Cheyni

私の場合、そもそもパッチファイルを誤って作成するほど愚かでした。実際には間違った方法で差分をとるです。まったく同じエラーメッセージが表示されました。

マスター上でgit diff branch-name > branch-name.patchを実行すると、発生するすべての追加を削除しようとします(逆の場合も同様です)。

必ずブランチにチェックアウトしてgit diff master > branch-name.patchを実行してください

2
Ophidian

このリンク を見つけました

私はこれがなぜ機能するのか分かりませんが、多くの回避策を試しましたが、これが私のために働いた唯一のものです。つまり、以下の3つのコマンドを実行します。

git fsck --full
git reflog expire --expire=now --all
git gc --Prune=now
1
Archmede