wake-up-neo.net

Git-Fehler beim Festschreiben nach dem Zusammenführen - fatal: Ein teilweises Festschreiben während einer Zusammenführung ist nicht möglich

Ich habe einen git pull ausgeführt, der 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, erhalte ich die Fehlermeldung:

fatal: cannot do a partial commit during a merge.

Ich hatte das gleiche Problem vor und die Verwendung von -a in commit funktionierte einwandfrei. Ich denke, es ist nicht der perfekte Weg, weil ich nicht alle Änderungen übernehmen möchte. Ich möchte Dateien separat mit separaten Kommentaren übergeben. Wie kann ich das machen? Warum erlaubt git Benutzern nicht, Dateien nach einer Zusammenführung separat festzuschreiben? Ich konnte keine befriedigende Antwort auf dieses Problem finden.

241
pMan

Ich habe festgestellt, dass das Hinzufügen von "-i" zum Commit-Befehl dieses Problem für mich behoben hat. Das -i sagt im Wesentlichen, dass es zusätzliche Dateien bereitstellen soll, bevor es festgelegt wird.

git commit -i myfile.php
394
MikaelHalen
git commit -am 'Conflicts resolved'

Das hat bei mir funktioniert. Sie können dies auch versuchen.

85
Pratip Ghosh

In den meisten Fällen können Sie git commit -i verwenden, falls dies nicht funktioniert 

Sie müssen git commit -m "your_merge_message" tun. Während eines Zusammenführungskonflikts können Sie keine einzelne Datei zusammenführen 

  1. Bühne nur die konfliktierte Datei (git add your_file.txt)
  2. git commit -m "your_merge_message"
27
aWebDeveloper

Sie haben wahrscheinlich einen Konflikt mit etwas, das Sie nicht zum Festmachen inszeniert haben. git wird nicht zulassen, dass Sie die Dinge unabhängig festlegen (da dies alles Teil der Zusammenführung ist, denke ich), also müssen Sie diese Datei git add und dann git commit -m "Merge conflict resolution". Das -i-Flag für git commit führt das Hinzufügen für Sie aus.

13
Paul Price

Ich habe dies erhalten, als ich den -m in meinem Git-Commit beim Lösen eines Git-Merge-Konflikts vergessen habe.

git commit "commit message"

sollte sein 

git commit -m "commit message"
9
wgeorge

Wie die Fehlermeldung besagt, können Sie nach einer Zusammenführung keine partielle Festschreibung durchführen. Anstatt nur file.php zu übergeben, sollten Sie alle Änderungen übernehmen. 

Das sollte funktionieren.

git commit -m "Fixing merge" 
7
Asim Jalis

Ihre Zusammenführung wurde in der Mitte der Aktion angehalten.

git add file_1.php file_2.php file_3.php git commit

Prost

6
Moyshe Zuchmir

Wenn Sie nur die ganze Kirschpickerei aufheben und Dateien in den von Ihnen gewünschten Sets übergeben möchten, 

git reset --soft <ID-OF-THE-LAST-COMMIT>

bringt dich hin.

Bei einem Soft-Reset wird der Zeiger, der auf aktuelles HEAD zeigt, zu dem von Ihnen angegebenen Commit (ish) verschoben, die Dateien werden jedoch nicht geändert. Bei einem harten Reset wird der Zeiger verschoben, und alle Dateien werden in den Zustand dieses Commits (ish) zurückgesetzt. Dies bedeutet, dass Sie mit dem Soft-Reset den Zusammenführungsstatus löschen können, die Änderungen an den tatsächlichen Dateien jedoch beibehalten und sie anschließend einzeln festschreiben oder zurücksetzen können.

5
Zds

Für mich selbst war dies in SourceTree der Fall, als ich vor dem Auflösen aller Dateien versuchte, eine Zusammenführung durchzuführen. Ich habe dann die letzte Datei als gelöst markiert und trotzdem gab es diesen Fehler beim Commitversuch. Ich habe SourceTree geschlossen und es wieder geöffnet, und dann hat es gut funktioniert.

3
Justin

Ich habe dies mit einem vollständig anderen Ansatz gelöst, bei dem nur die Quellcodeverwaltung von Xcode verwendet wurde.

Hintergrund: Ein anderes Team hat Änderungen in das entfernte Git-Repository verschoben (über Beanstalk). In meinem Fall sind die .xcodeproj-Dateien in einem anderen Verzeichnis eingegangen, und die Änderungen wurden nicht übernommen. Als ich später versuchte, ein Commit durchzuführen, erhielt ich einen Tree Conflict-Fehler in Xcode.

Tree Conflict Screenshot

Da es fast unmöglich ist, mit Xcode zu korrigieren, habe ich das .xcodeproj-Datei mit einer vom Git-Server heruntergeladenen Version. Das Ergebnis ... das Xcode-Projekt schien sich zu klären, aber alle Aktualisierungen des korrupten Pull wurden als Änderungen angezeigt, die ich vorgenommen hatte und die für ein Commit bereitgestellt wurden.

Look at all these Mods and Added files

Beim Versuch, ein Commit durchzuführen, wurde jedoch der Fehler "Schwerwiegend: Teilweises Commit während einer Zusammenführung ist nicht möglich" angezeigt, der hier beschrieben wird.

Hier ist, wie ich das Problem gelöst habe ... (Verstehe, dass ich ein Anfängerprogrammierer bin, so dass ich etwas Verständnis verlieren könnte ... aber meine Unwissenheit hat mich dazu veranlasst, einen anderen Weg zu finden, dies zu tun.) Zuerst habe ich meinen Meister geklont Verzweigen Sie sich in einen sekundären Zweig und wechseln Sie zu diesem Zweig. Dann habe ich eine Arbeitskopie erstellt und das Verzeichnis in diese Arbeitskopie außerhalb des ursprünglichen Projektverzeichnisses gestellt. (Ich weiß nicht, ob dies notwendig war, aber es ist das, was ich beim Lesen anderer Problembehandlungstechniken getan habe.) Dann wechselte ich zu dem Master, wo ich feststellte, dass alle meine Staged-Dateien (Änderungen an Commit) weg waren. Um sicherzustellen, dass alle Dateien auf die neuesten Änderungen der Gegenstelle aktualisiert wurden, habe ich einen neuen Zweig namens ThirdBranch erstellt, der alle Dateien dupliziert, auf den Git-Server übertragen und Beanstalk meine Serverversion des Master-Zweigs mit der vergleichen lässt ThirdBrach Branch, 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, außer dem, was ich gerade beschrieben habe ... und füllen Sie die Lücken aus, die ich ausgelassen habe. Ich bin neu darin und verstehe nicht alles. Vielleicht kann ein erfahrener Programmierer die irrelevanten Informationen von den relevanten trennen und diese Technik klarer nachbilden, was zum Teil der Grund ist, warum ich dies poste.

Dies ist eine doppelte Antwort auf eine doppelte Frage am: Fehler beim Zusammenführen von Xcode Git

3
Plexander

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 hierher gekommen über diese verwandte Frage weil ich diese Nachricht bekommen habe:

fatal: You have not concluded your merge (MERGE_HEAD exists).

Ich habe auch mergetool ausprobiert, auf dem No files need merging Steht. 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 Push up. Es wäre sicher schön, wenn git Ihnen bessere Hinweise geben würde, was Sie in diesen Situationen tun sollten.

2
szeitlin

Während einer Zusammenführung möchte Git die übergeordneten Zweige aus verschiedenen Gründen verfolgen. Was Sie tun wollen, ist keine Verschmelzung, wie GIT es sieht. Wahrscheinlich möchten Sie manuell eine Rebase oder einen Kirschpick machen.

2
Talljoe
  1. gehen Sie in Ihr Projektverzeichnis
    1. verborgene Dateien anzeigen (.git Ordner wird angezeigt)
    2. Öffnen Sie den .git Ordner
    3. mERGE_HEAD entfernen 
    4. wieder begehen
    5. wenn git Ihnen mitteilte, dass git gesperrt ist, gehen Sie zurück in den .git-Ordner und entfernen Sie index.lock
    6. commit noch einmal alles funktioniert diesmal gut.
1
Ahmed Samir

Nachdem Sie alle Kommentare gelesen haben. das war meine entschließung:
Ich musste es erneut "hinzufügen", als zu begehen 

$ git commit -i -m support.html "doit once for all" [master 18ea92e] support.html
0
FelipeNutz

Wenn Sie den Quellbaum oder eine andere GUI verwenden, stellen Sie sicher, dass alle Dateien überprüft werden (nach dem Zusammenführen).

0
luky

Wenn es sich in Source Tree befindet, sollten wir eine Datei explizit als aufgelöst markieren, nachdem die Konflikte gelöst wurden. Datei auswählen die gerade zu keinen Konflikten aufgelöst wurde. Dann Aktionen -> Konflikte lösen -> Als gelöst markieren . Wenn Sie mehrere Dateien haben, machen Sie dasselbe für alle. Tue es jetzt.

0
cgr