Ich versuche, einen Patch anzuwenden, der Binärdateien mit git apply
enthält, aber nur die Dateien werden hinzugefügt. Ich habe versucht, git apply failing.patch -v
auszuführen und es druckt etwas wie:
Übersprungener Patch 'file.txt'.
Patch file.bin wird geprüft ...
Patch file.bin sauber angewendet.
Wie kann ich herausfinden, was der Grund für das Überspringen ist? Da die aktuelle Nachricht nicht sehr aufschlussreich ist.
Ich habe das Problem herausgefunden, indem ich patch -p1 < failing.patch
ausgeführt habe.
datei kann nicht an der Eingabezeile 5 gepatcht werden
und erinnerte mich daran, dass ich mich nicht im Stammverzeichnis befand.
Ich kann nicht verstehen, warum niemand hatte das vorher gefragt und warum ist die ausführliche Nachricht nicht ausführlich.
Auch nicht in der offiziellen Dokumentation werden Überspringen und mögliche Ursachen erwähnt.
Dieses Problem muss auftreten, während versucht wird, Änderungen in Projekte zu portieren. git apply
scheint alle Verzeichnisnamen in den Patch-Dateipfaden zu ignorieren, und es lehnt die Anwendung ab, wenn die Indexzeile nicht mit einem Dateihash im Ziel-Repository übereinstimmt. Ich hatte besseren Erfolg mit diesen Optionen (wovon --no-index
undokumentiert scheint):
git apply --verbose --no-index --directory {subdir} {patch-file}
Habe das gleiche Problem. In meinem Fall war die Fehlerquelle .git
Ordner in einigen übergeordneten Verzeichnissen des Patch-Ziels. Die Lösung bestand darin, das Patch-Ziel außerhalb dieses übergeordneten Verzeichnisses zu verschieben.