2009-12-03 12 views
11

Puoi dirmi come posso risolvere l'errore 'patch non si applica' quando provo a 'git apply-patch'?Errore nell'esecuzione 'git apply'

$ git apply 0001-my.patch 
error: patch failed:test.xml:114 
error: text.xml: patch does not apply 

Ho 'test.xml' nella mia directory locale. E quando faccio 'git status', mostra che non ho cambiamenti locali.

Grazie per qualsiasi aiuto.

risposta

2

Bene, la patch contiene informazioni su cosa dovrebbe essere cambiato in cosa. Se il primo cosa non corrisponde al contenuto del file, la patch non si applica.

12

Si può provare una:

git am -3 

Quando la patch non si applica in modo pulito, ripiegare su 3-way merge (git am doc)


qneill menzioni in the comments che git apply now have a --3way option:

ora è possibile applicare le patch senza dover ridurre il contesto.
Poiché lascerà le metà in conflitto nell'indice e consentirà di risolvere manualmente i conflitti nell'albero di lavoro, "--3way" implica "--index" e non può essere utilizzato con "--cached" o "--reject".

Lo si può vedere nel git1.7.12 release note (agosto 2012, un po 'meno di 3 anni dopo la domanda iniziale)

"git apply" imparato a muovere la versione base ed eseguire tre vie merge quando una patch non si applica esattamente alla versione che hai.

+3

Sembra che git-apply abbia un'opzione --3way ora come 1.7.11.1 (vedere http://git.661346.n2.nabble.com/PATCH-v4-00-19-quot-git-apply -3way-quot-td7562763.html) – qneill

+0

@qneill buon punto. Ho modificato la risposta per riflettere questa nuova funzionalità. – VonC

0

Oppure si potrebbe anche voler rebase con principale o l'origine

git rebase origin 

Giusto per assicurarsi che siete sulla stessa traccia con le ultime modifiche prima di iniziare ad applicare le patch da altri ragazzi.