web-dev-qa-db-ja.com

git applyがパッチをスキップする

git applyのバイナリファイルを含むパッチを適用しようとしていますが、ファイルのみが追加されます。 git apply failing.patch -vを実行してみましたが、次のように表示されます。

パッチ「file.txt」をスキップしました。
パッチfile.binを確認しています...
パッチファイル.binをきれいに適用。

スキップの理由を知るにはどうすればよいですか?現在のメッセージはあまり啓蒙的ではないので。

20
Iulian Onofrei

印刷されたpatch -p1 < failing.patchを実行して問題を見つけました:

入力行5でパッチするファイルが見つかりません

ルートディレクトリにいないことを思い出しました。

なぜなのか理解できません これまで誰もこれを尋ねていなかった で、詳細メッセージが詳細ではないのはなぜですか。

また、 公式ドキュメント でさえ、スキップや考えられる原因について言及していません。

20
Iulian Onofrei

プロジェクト間で変更を移植しようとしている間にこの問題に苦しんでいます。 git applyは、パッチファイルパス上のディレクトリ名を無視しているようです。また、Index行がターゲットリポジトリのファイルハッシュと一致しない場合、適用は拒否されます。私はこれらのオプション(そのうちの--no-indexは文書化されていないようです):

git apply --verbose --no-index --directory {subdir} {patch-file} 
3
Ed Randall

同じ問題を得た。私の場合、エラーの原因は.gitパッチターゲットの親ディレクトリの一部にあるフォルダ。解決策は、パッチターゲットをその親ディレクトリの外に移動することでした。

0
Alexander