2009-11-30 102 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