Ich habe mein .emacs-Verzeichnis abgerufen und den folgenden Konflikt gefunden:
%Vor%Git Status zeigte folgendes:
%Vor% Okay, also schlug git vor, git rm
zu verwenden. Ich möchte die lokale Datei vollständig durch die Datei ersetzen, die ich einlese, also scheint es irgendwie vernünftig zu sein ... Also mache ich git rm elisp/dired-details+.el
und git merge
. Ich bekomme:
git merge: fatal: Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert). Bitte bestätigen Sie Ihre Änderungen, bevor Sie sie zusammenführen können.
Okay, gut: git commit -a -m "ugh merge conflicts"
; git pull origin master
.
Jetzt geht alles gut zusammen, außer dass mir dired-details+.el
fehlt, ich bin irgendwie verwirrt, und ich würde gerne die Antworten auf Folgendes wissen:
git-rm
rückgängig und erhalte diese Datei von der Remote-Zweigstelle? .. add/add
? .. git-rm
'der Datei, die ich ersetzen wollte, getan? .. Machen Sie zunächst Ihren Zusammenführungs-Commit mit git reset --hard HEAD^
rückgängig. Beachten Sie, dass dies das letzte Commit löscht und Ihre Arbeitskopie auf den Status des vorherigen Commits zurücksetzt. Seien Sie also vorsichtig, bevor Sie das tun. gitk
kann dabei helfen, dies zu visualisieren.
Zweitens macht git rm
nicht, was Sie hier erwartet haben. Wenn Sie einen Zusammenführungskonflikt haben, betrachten Sie die Datei in einem halb zusammengeführten Zustand, wobei die Datei Konfliktmarkierungen enthält, damit Sie den Konflikt lösen können. An diesem Punkt werden Sie aufgefordert, die Arbeitskopie in dem Zustand zu fixieren, in dem der endgültige Zusammenführungs-Commit aussehen soll. Durch das Entfernen der Datei haben Sie Git gesagt, dass die Datei überhaupt nicht mehr vorhanden sein soll, was Sie nicht wollten.
In diesem Stadium müssen Sie die in Konflikt stehende Datei in Ihrer Arbeitskopie auf die Version aktualisieren, die Sie behalten möchten. Üblicherweise geschieht dies, indem die Konfliktmarker untersucht und die Datei entsprechend angepasst wird. Wenn Sie in Ihrem Fall sicher sind, dass Sie die Kopie aus der Zweigstelle, aus der Sie zusammenführen, möchten, können Sie git show :3:elisp/dired-details+.el > elisp/dired-details+.el
dazu verwenden. Dann git add elisp/dired-details+.el
, um git mitzuteilen, dass Sie den Konflikt in dieser Datei gelöst haben und dann git commit
beenden.
Hier fordert git show :3:...
die Version der Datei von MERGE_HEAD an. Wenn Sie eine andere Version benötigen, können Sie auch 1
für den gemeinsamen Vorfahren oder 2
für "Ihre" Seite der Zusammenführung verwenden.