Das erste, was ich klarstellen möchte, ist, dass Zweignamen nur ein Alias für einen bestimmten Commit sind. Ein Commit ist das, womit Git arbeitet, wenn Sie pullen, pushen, mergen und so weiter. Jeder Commit hat eine eindeutige ID.
Wenn Sie $ git merge ausführen, versucht Git, Ihren aktuellen Zweig auf den Commit vorzuspulen, auf dem sich der referenzierte Zweig befindet (mit anderen Worten, beide Zweignamen zeigen auf denselben Commit). Dieses Szenario ist für Git am einfachsten zu handhaben, da es keinen neuen Commit gibt. Stellen Sie sich vor, der Master springt auf das Lilipad, auf dem sich Ihr Zweig gerade befindet. Es ist möglich, das --no-ff Flag zu setzen, in diesem Fall wird Git einen neuen Commit erstellen, unabhängig davon, ob es irgendwelche Codekonflikte gab.
In einer Situation, in der es Codekonflikte zwischen den beiden Zweigen gibt, die Sie zusammenführen wollen (normalerweise zwei Zweige, deren Commit-Historie einen gemeinsamen Commit in der Vergangenheit aufweist), wird der schnelle Vorlauf nicht funktionieren. git kann die Dateien trotzdem automatisch zusammenführen, solange nicht dieselbe Zeile von beiden Zweigen in einer konfliktbehafteten Datei geändert wurde. in diesem Fall wird git die konfliktbehafteten Dateien für Sie zusammenführen UND automatisch committen. Mit $ git diff --cached können Sie überprüfen, wie Git vorgegangen ist. Sie können auch die Option --no-commit an den Merge-Befehl übergeben, wodurch geänderte Dateien in Ihrem Index verbleiben, die Sie dann hinzufügen und übertragen müssen. Sie können diese Dateien jedoch mit $ git diff überprüfen, um zu sehen, was der Merge-Befehl ändert.
Das dritte Szenario ist, wenn es Konflikte gibt, die Git nicht automatisch auflösen kann. In diesem Fall müssen Sie sie manuell zusammenführen. Meiner Meinung nach ist dies am einfachsten mit einem Merge-Take, wie araxis merge oder p4merge (kostenlos). In beiden Fällen müssen Sie jede Datei einzeln bearbeiten. Wenn der Merge nicht vorankommt, benutzen Sie $ git merge --continue, um ihn voranzutreiben. Git sollte Ihnen mitteilen, ob es nicht weitergehen kann und wenn ja, warum nicht. Wenn du das Gefühl hast, dass du die Zusammenführung zu einem bestimmten Zeitpunkt verpfuscht hast, kannst du $ git merge --abort verwenden, und die Zusammenführung wird rückgängig gemacht und du kannst von vorne beginnen. Wenn Sie fertig sind, ist jede Datei, die Sie zusammengeführt haben, eine geänderte Datei, die hinzugefügt und committed werden muss. Sie können mit $ git status überprüfen, wo sich die Dateien befinden. Wenn Sie die zusammengeführten Dateien noch nicht übertragen haben. Das müssen Sie tun, um die Zusammenführung abzuschließen. Sie müssen die Zusammenführung abschließen oder abbrechen, bevor Sie den Zweig wechseln können.