Ich entwickle mich auf einer anderen Maschine als ich es normalerweise tue, und es scheint, dass git sich anders benimmt als ich mich erinnern kann. git status und git diff leer nach fehlgeschlagenem git bin
Als ich Kasse eine Niederlassung git checkout -b <new branch name>
, und versuchen, einen Patch git am </path/to/file.patch>
anzuwenden, schlägt der Patch einzuspielen:
</path/to/file.patch>
Applying: <commit msg>
error: patch failed: <filename>:<line no>
error: <filename>: patch does not apply
Patch failed at <commit msg>
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Jetzt habe ich auf meinem anderen Maschinen schwören, wenn ein Patch anzuwenden ausfällt, git status
und git diff
zeigt die Datei als modifiziert mit <<<HEAD>>>>
Markierungen, die zeigen, wo ich die Drei-Wege-Zusammenführung reparieren muss. Derzeit git status
zeigt, ich bin in der Mitte einer Operation, aber keine Dateien geändert, wie auch git diff
.
Kann ich mich nicht erinnern, oder hat meine andere Maschine vielleicht eine ältere Version von git
oder sogar eine andere Konfigurationsoption? Warum zeigt git keinen Merge-Konflikt? Muss ich ein Mergetool einstellen? Ich habe im Moment keinen Zugriff auf meine andere Maschine, aber ich werde versuchen, diesen Beitrag mit mehr Informationen zu aktualisieren, wenn ich kann.
edit:
git am --3way
scheint zu sein, was ich will. [0] [1] Aber weder git am --3way <path/to/patch>
noch git config --global am.threeWay true
scheinen zu funktionieren.
ah, es mit einer anderen Nachricht versagt jetzt:
</path/to/file.patch>
Applying: <commit msg>
fatal: sha1 information is lacking or useless (<filename>). <-- new
error: could not build fake ancestor <-- new
Patch failed at <commit msg>
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Similary, git am --3way </path/to/patch>
schlägt mit:
error: patch failed: <file>:<lineno>
error: repository lacks the necessary blob to fall back on 3-way merge.
error: Makefile: patch does not apply
dieser Patch Vielleicht unkündbar ist? Der Zugriff auf patch -p1 < </path/to/path>
gilt das erste Stück und schlägt für das zweite fehl, also denke ich, dass ich das nur von Hand machen muss.
Ich sollte beachten, dass ich aus einem flachen Repo mit --depth 1
geklont arbeite.
[0] https://www.kernel.org/pub/software/scm/git/docs/git-am.html [1] https://www.kernel.org/pub/software/scm/git/docs/git-config.html
Die Nachricht selbst braucht sicherlich beefed-up zu sein. Ich werde den Hinweis "git fetch --unserhalb" auch auf meine andere Antwort anwenden. – torek