2009-11-30 13 views
9

Come posso applicare una patch nel mio repository di posizione in git?Come posso applicare un file patch in git

ho provato $ git am < 0001-Add-Voicemail-scheda-a-Contacts.patch patch non avere un indirizzo e-mail valido.

ho cercato $ git applicare 0001-my.patch

ma ottengo fatale: intestazione git diff non dispone di informazioni nome del file (linea 27) dove la linea 27 è "GIT patch binaria" nel mio file di patch. Il mio file di patch contiene un png.

Questa è la riga 24 e

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{= 

risposta

18

sono stato in grado di riprodurre il problema fingendo un problema di end-of-line.

$ 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) 

Supponendo che si sta eseguendo Linux, provare

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

Se stai usando Cygwin, eseguire la conversione opposta:

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

Penso che sia qualcosa a che fare con il binario file nella patch. – n179911

+0

Sono riuscito a prendere una patch di lavoro e indurre l'errore che hai visto. Vedi la risposta modificata. –

Problemi correlati