以下を使用して、バイナリ ファイルを含むパッチ ファイルを作成しました。
$ git format-patch --stdout myref^ > patch.diff
しかし、私がそれを適用しようとすると:
$ git apply -p2 patch.diff
エラーが表示されます: fatal: git diff header lacks filename information when removing 2 leading pathname components (line 2868)
。
行 2868 はnew file mode 100755
であり、ここにいくつかのコンテキストを含む差分があります:
2866 … 前のハンクの終わり … 2867 差分 --git a/some/path/foo.png b/some/path/foo.png 2868 新しいファイル モード 100755 2869 インデックス 2870 GIT バイナリ パッチ 2871 リテラル 363713 2872 zcmV(@K-RyBP)xh;3K|Lk000e1NJLTq00UqE008_50ssI2p1e?20000PbVXQnQ*UN;
どうしたの?手動で修正せずにこのパッチを適用する方法はありますか?
ノート:
a/some/path/foo.png
有効なyieldsから 2 つの先行パス コンポーネントを削除するため、エラーは明らかに正しくありませんpath/foo.png
。- 最終的に、不要な先行パス コンポーネントを手動で削除することで、この問題を「修正」しました
%s:\([ab]\)/some:\1:g
。 - 最初の 2 つのパス コンポーネントが削除された無効なパスを生成するハンクはないと確信しています。
これは Mac の git バージョン 1.7.3.1 であり、パッチは Linux で作成されました。
この問題を示すパッチ ファイルは次のとおりです。
From 174c35d2f4a8794608eccd31b9f7d361b5ee58c3 Mon Sep 17 00:00:00 2001
From: David Wolever <david@wolever.net>
Date: Mon, 7 Jan 2013 13:31:42 -0500
Subject: [PATCH] Added binary file
---
subdir/binfile.tgz | Bin 0 -> 153 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 subdir/binfile.tgz
diff --git a/subdir/binfile.tgz b/subdir/binfile.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..f71f21d3357260edea2fb7b4641a35031c759393
GIT binary patch
literal 153
zcmb2|=3wX(c^$yO{Pz4_zC#KUZV%7Jv4$u7$b3+>V$q5W-=o(~i~CwxWXP!KJ&(NC
zT4Pyq@_6dLr^}Qym*z%)j7Wc5++E4Nw&l{L%+*`M!aP!Y3VSD*E>64d{mt2P<}Z<B
z277AFj|yCBw_ZPA$o~DBBju}0Z{$4AtM@n_Tp#zxnu7rue3)vzamprF1`P%V0B|lt
AD*ylh
literal 0
HcmV?d00001
--
1.7.3.1
( http://git.661346.n2.nabble.com/Using-git-am-p-2-with-binary-patches-td5122345.htmlから取得)