Mai mult
git: patch-uri nu se aplică
Am un anumit patch numit my_pcc_branch.patch-uri.
Când m-am încercați să-l aplice, primesc următorul mesaj:
$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java has type 100644, expected 100755
error: patch failed: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: patch does not apply
Ce înseamnă?
Cum pot rezolva aceasta problema?
240
8
Johannes Sixt din msysgit@googlegroups.com lista de discuții a sugerat folosind următoarele argumente în linia de comandă:
Asta mi-a rezolvat problema.
git aplica --respinge --spațiu=fix mychanges.patch
a lucrat pentru mine.Atunci când toate acestea eșuează, încercați să
git aplica
's--3way
option.git aplica --3way patchFile.patch
Tipic eșua caz se aplică la fel de mult de patch-uri ca se poate, si te lasa cu conflictele de a lucra in git cu toate acestea ai face în mod normal așa. Probabil cu un pas mai ușor decât "respinge" alternativă.
Această comandă va aplica patch-uri nu rezolvi lăsând fișiere rău ca
*.rej
:Trebuie doar să le rezolve. Odată rezolvată rula:
Asta se întâmplă când amesteci UNIX și Windows git clienti pentru Windows nu't într-adevăr conceptul de "x" cam așa checkout dumneavoastră de o
rw-r--r--
(0644) fișier sub Windows este "a promovat" de msys POSIX strat să fierwx-r-xr-x
(0755). git consideră că modul diferența să fie practic la fel ca un text diferență în dosar, așa că plasturele nu se aplică direct. Cred că singura ta opțiune bună este de a stabili de bază.filemodea "false" (folosind
git-config`).Aici's o msysgit problema cu unele informații legate de: http://code.google.com/p/msysgit/issues/detail?id=164 (redirecționat de la arhiva.org's 3 Dec 2013 copie)
Încercați să utilizați soluția sugerată aici: https://www.drupal.org/node/1129120
patch-p1 < exemplu.patch
Acest lucru m-a ajutat .
În cazul meu, am fost destul de prost pentru a crea patch-uri de fișier incorect în primul rând, de fapt diff-ing în mod greșit. Am ajuns cu exact aceleași mesaje de eroare.
Daca're pe maestru și de a face
git diff ramură-numele > sucursală-numele.patch
, aceasta încearcă pentru a elimina toate completările doriți să se întâmple și invers (ceea ce a fost imposibil pentru git pentru a realiza, deoarece, evident, nu a făcut niciodată completările nu pot fi eliminate).Deci, asigurați-vă că checkout pentru a filialei și executa
git diff master > sucursală-numele.patch
Am găsit acest link
Nu am idee de ce funcționează acest lucru, dar am încercat de multe ocolitoare de lucru și acest lucru este singurul care a lucrat pentru mine. Pe scurt, executați trei comenzi de mai jos: