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?
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
--3way Când patch-uri nu se aplică curat, cad înapoi pe 3-modul de îmbinare dacă patch înregistrează identitatea pete ar trebui să se aplice, și am am acele pete disponibile la nivel local, lăsând eventual conflict markeri în fișierele din arborele de lucru pentru utilizator pentru a rezolva. Asta opțiune implică --index opțiune, și este incompatibilă cu --respinge și-în cache opțiuni.
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
:
git apply --reject --whitespace=fix mypath.patch
Trebuie doar să le rezolve. Odată rezolvată rula:
git -am resolved
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ă fie rwx-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:
git fsck --full
git reflog expire --expire=now --all
git gc --prune=now