Git
Zusammenführen
Suche…
Syntax
- git merge another_branch [Optionen]
- git merge --abort
Parameter
Parameter | Einzelheiten |
---|---|
-m | Nachricht, die in das Merge-Commit aufgenommen werden soll |
-v | Ausführliche Ausgabe anzeigen |
--abort | Versuchen Sie, alle Dateien in ihren Zustand zurückzusetzen |
--ff-only | Bricht sofort ab, wenn ein Merge-Commit erforderlich ist |
--no-ff | Erzwingt die Erstellung eines Merge-Commits, auch wenn dies nicht zwingend erforderlich ist |
--no-commit | Gibt vor, dass die Zusammenführung die Überprüfung und das Optimieren des Ergebnisses nicht zulässt |
--stat | Zeigt ein diffstat nach dem Abschluss der Zusammenführung an |
-n / --no-stat | Das diffstat nicht anzeigen |
--squash | Erlaubt ein einmaliges Commit für den aktuellen Zweig mit den zusammengeführten Änderungen |
Verbinden Sie einen Zweig mit einem anderen
git merge incomingBranch
Dadurch wird der Zweig " incomingBranch
mit dem Zweig verbunden, in dem Sie sich aktuell befinden. Wenn Sie sich zum Beispiel im master
, wird " incomingBranch
" mit dem master
.
Das Zusammenführen kann in manchen Fällen zu Konflikten führen. In diesem Fall wird die Meldung Automatic merge failed; fix conflicts and then commit the result.
Sie müssen die in Konflikt stehenden Dateien manuell bearbeiten oder den Zusammenführungsversuch rückgängig machen, indem Sie Folgendes ausführen:
git merge --abort
Automatisches Zusammenführen
Wenn die Commits in zwei Zweigen nicht miteinander in Konflikt stehen, kann Git sie automatisch zusammenführen:
~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
file_a | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Abbrechen einer Zusammenführung
Nach dem Starten einer Zusammenführung möchten Sie möglicherweise die Zusammenführung beenden und alles in den Zustand vor der Zusammenführung zurücksetzen. Verwenden Sie --abort
:
git merge --abort
Behalten Sie Änderungen nur auf einer Seite der Zusammenführung bei
Während einer Zusammenführung können Sie --ours
oder --theirs
an der git checkout
--theirs
, um alle Änderungen für eine Datei von der einen oder der anderen Seite einer Zusammenführung zu übernehmen.
$ git checkout --ours -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes
Mit einem Commit zusammenführen
Das Standardverhalten ist, wenn die Zusammenführung als schneller Vorlauf aufgelöst wird und nur der Verzweigungszeiger aktualisiert wird, ohne eine Zusammenführungsfestschreibung zu erstellen. Verwenden Sie --no-ff
zum Auflösen.
git merge <branch_name> --no-ff -m "<commit message>"
Finden aller Zweige ohne zusammengeführte Änderungen
Manchmal liegen Zweige herum, deren Änderungen bereits in Master eingearbeitet wurden. Dadurch werden alle Zweige gefunden, die kein master
sind und im Vergleich zu master
keine eindeutigen Commits haben. Dies ist sehr nützlich, um Zweige zu finden, die nicht gelöscht wurden, nachdem der PR in den Master eingefügt wurde.
for branch in $(git branch -r) ; do
[ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
done | sort -r