Ich lief ein git pull
, die in einem Konflikt endete. Ich habe den Konflikt gelöst und jetzt ist alles in Ordnung (ich habe auch Mergetool verwendet).
Wenn ich die aufgelöste Datei mit git commit file.php -m "message"
festschreibe, wird folgende Fehlermeldung angezeigt:
fatal: cannot do a partial commit during a merge.
Ich hatte das gleiche Problem zuvor und die Verwendung -a
in Commit funktionierte perfekt. Ich denke, es ist nicht der perfekte Weg, weil ich nicht alle Änderungen vornehmen möchte. Ich möchte Dateien separat mit separaten Kommentaren festschreiben. Wie kann ich das machen? Warum erlaubt git Benutzern nicht, Dateien nach einer Zusammenführung separat festzuschreiben? Ich konnte keine zufriedenstellende Antwort auf dieses Problem finden.
Antworten:
Ich habe festgestellt, dass das Hinzufügen von "-i" zum Commit-Befehl dieses Problem für mich behebt. Das -i weist es grundsätzlich an, vor dem Festschreiben zusätzliche Dateien bereitzustellen. Das ist:
quelle
Stage additional files
dasgit add
, was zumgit commit
Scheitern führt. Das Hinzufügen-i
würde git anweisen, gleichzeitig hinzuzufügen und festzuschreiben. Ich bin mir immer noch nicht sicher warum, aber es scheint sinnvoll zu sein.Das hat bei mir funktioniert. Sie können dies auch versuchen.
quelle
Sie können
git commit -i
für die meisten Fälle verwenden, aber falls es nicht funktioniertDu musst tun
git commit -m "your_merge_message"
. Während eines Zusammenführungskonflikts können Sie nicht eine einzelne Datei zusammenführengit add your_file.txt
)git commit -m "your_merge_message"
quelle
Sie haben wahrscheinlich einen Konflikt in etwas, das Sie nicht für das Festschreiben inszeniert haben. Mit git können Sie die Dinge nicht unabhängig festlegen (weil alles Teil der Zusammenführung ist, denke ich), also müssen Sie
git add
diese Datei und danngit commit -m "Merge conflict resolution"
. Das-i
Flag fürgit commit
erledigt das Hinzufügen für Sie.quelle
commit -i
funktioniert, aber nichtgit add; git commit
Ich habe dies erhalten, als ich das
-m
in meinem Git Commit vergessen habe, als ich einen Git Merge Konflikt gelöst habe.sollte sein
quelle
Wie die Fehlermeldung besagt, können Sie nach einer Zusammenführung keine teilweise Festschreibung durchführen. Anstatt nur zu begehen
file.php
festzuschreiben, sollten Sie alle Änderungen festschreiben.Das sollte funktionieren.
quelle
Ihre Zusammenführung wurde mitten in der Aktion gestoppt. Sie sollten Ihre Dateien hinzufügen und dann 'git commit':
git add file_1.php file_2.php file_3.php git commit
Prost
quelle
Wenn Sie nur die gesamte Auswahl an Kirschen pflücken und Dateien in den gewünschten Sätzen festschreiben möchten,
bringt dich dorthin.
Beim Soft-Reset wird der Zeiger, der auf den aktuellen HEAD zeigt, auf das von Ihnen angegebene Commit (ish) verschoben, die Dateien werden jedoch nicht geändert. Ein Hard-Reset würde den Zeiger bewegen und auch alle Dateien auf den Status in diesem Commit (ish) zurücksetzen. Dies bedeutet, dass Sie mit einem Soft-Reset den Zusammenführungsstatus löschen können, aber die Änderungen an den tatsächlichen Dateien beibehalten und sie dann einzeln nach Ihren Wünschen festschreiben oder zurücksetzen können.
quelle
quelle
Für mich selbst geschah dies in SourceTree, als ich versuchte, eine Zusammenführung durchzuführen, bevor alle Dateien aufgelöst wurden. Ich habe dann die zuletzt aufgelöste Datei markiert und trotzdem diesen Fehler beim Festschreiben festgestellt. Ich habe SourceTree geschlossen und wieder geöffnet, und dann hat es gut funktioniert.
quelle
Ich habe dies mit einem völlig anderen Ansatz gelöst , bei dem nur die Quellcodeverwaltung von Xcode verwendet wurde.
Hintergrund: Ein anderes Team hat Änderungen am Remote-Git-Repository (über Beanstalk) vorgenommen. Meiner Meinung nach kamen die .xcodeproj-Dateien in ein anderes Verzeichnis, und die Änderungen wurden nicht übernommen. Als ich später versuchte, ein Commit durchzuführen, erhielt ich einen Baumkonfliktfehler in Xcode.
Da es mit Xcode fast unmöglich ist, dies zu korrigieren, habe ich die
.xcodeproj
Datei durch eine vom Git-Server heruntergeladene Version ersetzt. Das Ergebnis ... das Xcode-Projekt schien sich zu klären, aber alle Aktualisierungen des beschädigten Pull wurden als von mir vorgenommene Änderungen angezeigt und für ein Commit bereitgestellt.Beim Versuch, ein Commit durchzuführen, wurde jedoch der hier beschriebene Fehler "Schwerwiegend: Während eines Zusammenführens kann kein partielles Commit ausgeführt werden" angezeigt.
Hier ist, wie ich das Problem gelöst habe ... (Verstehe jetzt, dass ich ein Anfänger-Programmierer bin, so dass mir etwas Verständnis fehlen könnte ... aber meine Unwissenheit hat mich dazu gebracht, einen anderen Weg zu finden, dies zu tun.) Zuerst habe ich meinen Meister geklont Verzweigen Sie in einen sekundären Zweig und wechseln Sie zu diesem Zweig. Dann habe ich eine Arbeitskopie erstellt und das Verzeichnis außerhalb des ursprünglichen Projektverzeichnisses in diese Arbeitskopie verschoben. (Ich weiß nicht, ob dies notwendig war, aber ich habe andere Fehlerbehebungstechniken gelesen.) Dann habe ich die Zweige zum Master gewechselt, wo ich festgestellt habe, dass alle meine bereitgestellten Dateien (Änderungen an Commit) verschwunden sind. Um sicherzustellen, dass alle Dateien auf die neuesten Änderungen der anderen Partei aktualisiert wurden, habe ich einen neuen Zweig namens ThirdBranch erstellt, in dem alle Dateien dupliziert wurden. Pushed es auf den Git Server und ließ Beanstalk meine Serverversion des Master-Zweigs mit dem ThirdBrach-Zweig vergleichen, den ich gerade gepusht habe (Zeile für Zeile), und alle Änderungen der anderen Partei waren auf meinem Xcode vorhanden. Dies bedeutete, dass mein Master-Repository und das Git-Master-Repository identisch waren, was bestätigt, dass ich das Problem nur mit Xcode gelöst habe.
Fragen Sie mich nicht wie, über das hinaus, was ich gerade beschrieben habe ... und füllen Sie auf jeden Fall die Lücken, die ich ausgelassen habe. Ich bin neu in diesem Bereich und verstehe nicht alles. Vielleicht kann ein erfahrener Programmierer die irrelevanten Informationen von den relevanten trennen und diese Technik klarer nachbilden, weshalb ich dies teilweise poste.
Dies ist eine doppelte Antwort auf eine doppelte Frage wie folgt : Fehlgeschlagene Xcode Git-Zusammenführung steckt fest
quelle
Während einer Zusammenführung möchte Git aus allen möglichen Gründen den Überblick über die übergeordneten Zweige behalten. Was Sie tun möchten, ist keine Zusammenführung, wie Git es sieht. Möglicherweise möchten Sie eine Rebase oder einen Cherry-Pick manuell durchführen.
quelle
git commit -i -m 'merge message'
hat bei mir nicht funktioniert. Es sagte:fatal: No paths with --include/--only does not make sense.
FWIW, ich bin über diese verwandte Frage hierher gekommen , weil ich diese Nachricht erhalten habe:
fatal: You have not concluded your merge (MERGE_HEAD exists).
Ich habe auch Mergetool ausprobiert
No files need merging
. Sehr verwirrend! Der MERGE_HEAD befindet sich also nicht in einer Datei, die zusammengeführt werden muss.Schließlich habe ich diesen Trick verwendet, um nur die geänderten Dateien hinzuzufügen (ich wollte nicht alle Dateien in meinem Baum hinzufügen, da ich einige habe, die ich nicht verfolgen möchte):
git ls-files -m | xargs git add
Dann konnte ich mich endlich (!) Festlegen und hochschieben. Es wäre sicher schön, wenn git Ihnen bessere Tipps geben würde, was in diesen Situationen zu tun ist.
quelle
Wenn es sich im Quellbaum befindet , sollten wir eine Datei explizit als gelöst markieren, nachdem die Konflikte gelöst wurden. Wählen Sie eine Datei aus , die gerade ohne Konflikte aufgelöst wurde. Dann Aktionen -> Konflikte lösen -> Gelöst markieren . Wenn Sie mehrere Dateien haben, machen Sie dasselbe für alle. Tue es jetzt.
quelle
Nach dem Lesen aller Kommentare. Dies war mein Vorsatz:
Ich musste es erneut "hinzufügen" als festschreiben:
quelle
Wenn Sie den Quellbaum oder eine andere GUI verwenden, stellen Sie sicher, dass alle Dateien überprüft werden (nach dem Zusammenführen).
quelle
Manchmal während der Zusammenführung, wenn Konflikte auftreten und es Deltas gibt, die manuell gelöst werden müssen. In diesem Fall korrigieren Sie die manuelle Auflösung für die genannten Dateien.
Wenn Sie jetzt ein Problem haben,
Sie sehen Ausgabe wie
Da Sie das Commit bereits inszeniert haben, müssen Sie es nur ausgeben
Und Ihr Commit wird ohne Probleme durchgeführt.
quelle