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?

Comentarii la întrebare (3)
Soluția

Johannes Sixt din msysgit@googlegroups.com lista de discuții a sugerat folosind următoarele argumente în linia de comandă:

git apply --ignore-space-change --ignore-whitespace mychanges.patch

Asta mi-a rezolvat problema.

Comentarii (9)

git aplica --respinge --spațiu=fix mychanges.patch a lucrat pentru mine.

Comentarii (8)

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ă.

Comentarii (4)

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
Comentarii (5)

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" (folosindgit-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)

Comentarii (3)

Încercați să utilizați soluția sugerată aici: https://www.drupal.org/node/1129120

patch-p1 < exemplu.patch

Acest lucru m-a ajutat .

Comentarii (1)

Î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

Comentarii (0)

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
Comentarii (0)