496 Stimmen

Git: Patch lässt sich nicht anwenden

Ich habe einen bestimmten Patch namens my_pcc_branch.patch.

Wenn ich versuche, ihn anzuwenden, erhalte ich folgende Meldung:

$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java hat Typ 100644, erwartet wird 100755
error: patch fehlgeschlagen: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: Patch wird nicht angewendet

Was bedeutet das?

Wie kann ich dieses Problem beheben?

0 Stimmen

Gibt es irgendwelche AbstractedPanel.java.rej Dateien herumliegen? Typischerweise bedeutet dies, dass eine Zeile sowohl in der Quelle als auch im Patch geändert wurde (hier scheint Zeile 13 betroffen zu sein).

0 Stimmen

Nein, ich habe keine *.rej-Dateien gefunden.

0 Stimmen

Hast du versucht, einen Bug an git@vger.kernel.org zu melden? Keine der beschriebenen Optionen von Git funktioniert für mich und es treten unzählige Fehler auf. Ich musste auf WinMerge zurückgreifen.

1voto

MShubat Punkte 321

Wenn das Patch nur teilweise angewendet wird, aber nicht der gesamte Patch. Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden, wenn Sie den Patch anwenden.

Zum Beispiel habe ich eine Patchdatei im übergeordneten Projektordner erstellt, die die .git-Datei enthält. Allerdings habe ich versucht, den Patch auf einer untergeordneten Ebene anzuwenden. Es wurden nur Änderungen auf dieser Ebene des Projekts angewendet.

0 Stimmen

Das hat mich in die richtige Richtung gebracht. Ich war im falschen Verzeichnis, als ich das Patch angewendet habe, weshalb es nicht angewendet wurde. Danke

0voto

Solomon Ucko Punkte 3858

Mein Problem ist, dass ich git diff ausgeführt habe, dann git reset --hard HEAD ausgeführt habe und dann festgestellt habe, dass ich dies rückgängig machen wollte. Also habe ich versucht, den Output von git diff in eine Datei zu kopieren und mit git apply zu verwenden, bekam aber einen Fehler, dass "der Patch nicht angewendet werden konnte". Nachdem ich zu patch gewechselt und versucht habe, es zu benutzen, realisierte ich, dass ein Teil des Diffs aus irgendeinem Grund wiederholt wurde, und nachdem ich das Duplikat entfernt hatte, funktionierte patch (und vermutlich auch git apply).

0 Stimmen

@VirendraKumar Ich habe die Diff-Datei manuell bearbeitet, um die Duplikatzeilen zu entfernen. Anschließend habe ich patch verwendet. (git apply würde wahrscheinlich auch funktionieren.)

0voto

Gerson Montenegro Punkte 316

Nur zur Sicherheit, das ist mir passiert, als die Änderungen, die ich anwenden wollte, bereits in der Datei vorhanden waren.

-1voto

Bhanu Punkte 1

Was ich gesucht habe, wird hier in SO nicht genau erwähnt. Ich schreibe zum Nutzen anderer, die möglicherweise nach Ähnlichem suchen. Ich hatte ein Problem mit einer Datei (die sich im alten Repository befand), die im Repository gelöscht wurde. Und als ich den Patch anwende, schlägt er fehl, da er die zu applizierende Datei nicht finden konnte. (Also mein Fall ist, dass der Git-Patch fehlschlägt, weil die Datei entfernt wurde) "#git apply --reject" hat definitiv einen Blick gegeben, aber hat mich nicht ganz zur Lösung gebracht. Ich konnte keinen Wiggle verwenden, da er auf unseren Build-Servern nicht verfügbar ist. In meinem Fall habe ich dieses Problem gelöst, indem ich den Eintrag der 'Datei, die im Repository entfernt wurde', aus der Patch-Datei entfernt habe, die ich versucht habe anzuwenden, damit alle anderen Änderungen ohne Probleme angewendet werden (unter Verwendung eines 3-Wege-Merges, um Leerzeichenfehler zu vermeiden), und dann manuell den Inhalt der entfernten Datei an der Stelle zusammenführen, wo sie hinbewegt wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X