git apply
のバイナリファイルを含むパッチを適用しようとしていますが、ファイルのみが追加されます。 git apply failing.patch -v
を実行してみましたが、次のように表示されます。
パッチ「file.txt」をスキップしました。
パッチfile.binを確認しています...
パッチファイル.binをきれいに適用。
スキップの理由を知るにはどうすればよいですか?現在のメッセージはあまり啓蒙的ではないので。
印刷されたpatch -p1 < failing.patch
を実行して問題を見つけました:
入力行5でパッチするファイルが見つかりません
ルートディレクトリにいないことを思い出しました。
なぜなのか理解できません これまで誰もこれを尋ねていなかった で、詳細メッセージが詳細ではないのはなぜですか。
また、 公式ドキュメント でさえ、スキップや考えられる原因について言及していません。
プロジェクト間で変更を移植しようとしている間にこの問題に苦しんでいます。 git apply
は、パッチファイルパス上のディレクトリ名を無視しているようです。また、Index行がターゲットリポジトリのファイルハッシュと一致しない場合、適用は拒否されます。私はこれらのオプション(そのうちの--no-index
は文書化されていないようです):
git apply --verbose --no-index --directory {subdir} {patch-file}
同じ問題を得た。私の場合、エラーの原因は.git
パッチターゲットの親ディレクトリの一部にあるフォルダ。解決策は、パッチターゲットをその親ディレクトリの外に移動することでした。