Als erstes möchte ich klarstellen, dass Zweigstellennamen nur ein Alias für ein bestimmtes Commit sind. Ein Commit ist das, was Git funktioniert, wenn Sie ziehen, Merge drücken und so weiter. Jedes Commit hat eine eindeutige ID.
Wenn Sie $ git zusammenführen, geschieht tatsächlich, dass git versucht, Ihren aktuellen Zweig schnell zu dem Commit vorzuspulen, auf dem sich der Zweig befindet (mit anderen Worten, beide Filialnamen verweisen auf dasselbe Commit). Dieses Szenario ist für git am einfachsten zu behandeln, da es kein neues Commit gibt. Stellen Sie sich vor, der Meister springt auf den Lilipad, auf dem sich Ihr Zweig abkühlt. Es ist möglich, das Flag --no-ff zu setzen. In diesem Fall erstellt git ein neues Commit, unabhängig davon, ob Codekonflikte aufgetreten sind.
In einer Situation, in der Codekonflikte zwischen den beiden Zweigen bestehen, die Sie zusammenführen möchten (normalerweise zwei Zweige, deren Festschreibungsverlauf in der Vergangenheit ein gemeinsames Festschreiben aufweist), funktioniert der schnelle Vorlauf nicht. git kann die Dateien möglicherweise weiterhin automatisch zusammenführen, solange dieselbe Zeile nicht von beiden Zweigen in einer widersprüchlichen Datei geändert wurde. In diesem Fall führt git die in Konflikt stehenden Dateien für Sie zusammen UND schreibt sie automatisch fest. Sie können eine Vorschau der Arbeit von git anzeigen, indem Sie $ git diff --cached ausführen. Oder Sie können das Flag --no-commit an den Befehl merge übergeben, wodurch geänderte Dateien in Ihrem Index verbleiben, die Sie hinzufügen und festschreiben müssen. Sie können diese Dateien jedoch unterscheiden, um zu überprüfen, wie sich die Zusammenführung ändert.
Das dritte Szenario ist, wenn es Konflikte gibt, die Git nicht automatisch lösen kann. In diesem Fall müssen Sie sie manuell zusammenführen. Meiner Meinung nach ist dies am einfachsten mit einer Zusammenführung wie Araxis Merge oder p4merge (kostenlos) zu tun. In jedem Fall müssen Sie jede Datei einzeln ausführen. Wenn die Zusammenführung jemals hängen bleibt, verwenden Sie $ git merge --continue, um sie voranzutreiben. Git sollte dir sagen, ob es nicht weitergehen kann und wenn ja, warum nicht. Wenn Sie das Gefühl haben, dass Sie die Zusammenführung irgendwann verloren haben, können Sie $ git merge --abort ausführen. Jede Zusammenführung wird rückgängig gemacht und Sie können von vorne beginnen. Wenn Sie fertig sind, ist jede Datei, die Sie zusammengeführt haben, eine geänderte Datei, die hinzugefügt und festgeschrieben werden muss. Sie können überprüfen, wo sich die Dateien mit dem Status $ git befinden. Wenn Sie die zusammengeführten Dateien noch nicht festgeschrieben haben. Sie müssen dies tun, um die Zusammenführung abzuschließen.
git commit gf2n.cpp -m "Hand merge gf2n.cpp due to conflicts"
führt zufatal: cannot do a partial commit during a merge.
. Und natürlich scheinen "Partial Commits" nirgendwo auf den Git-Manpages dokumentiert oder diskutiert zu werden. Das Durchführen einesgit merge
nach dem Fix führt zuPlease, commit your changes before you can merge.
Was für ein kaputtes