2009-11-30 101 views
9

如何在git中的位置资源库中应用补丁?如何在git中应用补丁文件

我试图 $ git的是< 0001 - 添加 - 语音信箱 - 片 - Contacts.patch 补丁没有一个有效的电子邮件地址。

我试图 $混帐申请0001-my.patch

,但我得到 致命的:git的差异头缺少文件名信息(27行) 其中线27是我的补丁文件 “GIT二进制补丁”。我的补丁文件有一个PNG。

这是24行和

diff --git a/res/drawable-finger/icl.png b/res/drawable-finger/icl.png 
new file mode 100644 
index 0000000000000000000000000000000000000000..f78e65cf94d22059e0caeb90caee03e17166f109 
GIT binary patch 
literal 1697 
zcmV;S244AzP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN; 
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU&LrFwIRCwCNS6ygRXBd9-pOdCZnl?Wr 
zT}!*JMXxLc!LeIm!`%pu!FDwmis0~S-pnf*2)mHMWH7G;(JNtBW1={AA=C-BqUf{= 

回答

18

我能够通过伪造最终的线的问题重现您的问题。

$ cp /bin/ls . 
$ git add ls; git commit -m second 
[master 8668716] second 
1 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100755 ls 
$ git format-patch HEAD^..HEAD 
0001-second.patch 
$ git reset --hard HEAD^ 
HEAD is now at 686ace7 first 
$ unix2dos 0001-second.patch 
$ git apply 0001-second.patch 
fatal: git diff header lacks filename information (line 14) 

假设你正在运行Linux,尝试

$ dos2unix 0001-Add-Voicemail-tab-to-Contacts.patch 
$ git apply !$ 

如果你正在运行的Cygwin,执行相反的转换:

$ unix2dos 0001-Add-Voicemail-tab-to-Contacts.patch 
$ git apply !$ 
+0

我认为这是值得做的二进制文件在补丁中。 – n179911 2009-11-30 18:08:14

+0

我能够采取工作补丁并引发您看到的错误。见编辑的答案。 – 2009-11-30 18:19:10