Merge-commit vs normal Begehen
Auf die tägliche routine, die ich verwenden SmartGit
als client wählen. Meine team-Mitglieder, die jedoch-stick zu git-native, nicht-kommerziellen GUI. Wir fanden einige Unterschiede, wie unsere merges aussieht.
Diese sind die Optionen, die SmartGit
gibt, wenn es angefordert wird, um merge branch:
Auf dem Diagramm unten sehen Sie mein Beispiel SmartGit Grafik-Ausgabe enthält:
- Einzelzimmer
master
Zweig - Einem branch zum master mit
merge commit
option - Einen branch mit
simple commit
option
Einer der Zweige (with_merge_branch
) ist die Visualisierung von merge-Vorgang durch den Beitritt Zweig mit master über die Linie. Der zweite (normal_commit_branch
) nicht.
Frage ist, wie man Sie durchzusetzen beide Verhaltensweisen in native git-Befehle? I. e. was ist der Unterschied zwischen diesen beiden verpflichtet?
Ich habe es nie benutzt, aber git merge mit dem squash-option entfernt jede Spur von dort zu einer zweiten übergeordneten Zweig. Wenn Sie Folgen Sie den doppelten link, sehen Sie einige Beispiele, warum möchten Sie vielleicht, es zu benutzen. Zusammenführen, ohne die squash-option ist das Standardverhalten von
git merge
.InformationsquelleAutor Tomas | 2017-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Unterschied zwischen den zwei Arten Zusammenführen, sind nur verschiedenen in der commit-Historie (wie du das zeigten die Protokolle in Diagramm).
Let ' s veranschaulichen durch Diagramme. Übernehmen Sie die commit-Geschichte, wie unten vor der Verschmelzung:
Merge-commit (mehrere Eltern):
Den Befehl verwendet wird
git merge branchname
. Es ist der Standard-Weg zum Zusammenführen von zwei Zweigen.Beim Zusammenführen
develop
Filiale inmaster
Zweig von Merge-commit in SmartGit (git merge develop
), die commit-Geschichte werden:Einfach zu Begehen (ein Elternteil, "squash"):
Er führt zwei Filialen mit
--squash
option, wird der Befehl verwendet, istgit merge branchname --squash
.Beim Zusammenführen
develop
Filiale inmaster
Zweig von einfach zu Begehen in SmartGit (git merge develop --squash
), es werden die änderungen aus derdevelop
Filiale inmaster
Zweig als neue ordentliche commit (als ob ein echter merge passiert ist), und die commit-Geschichte werden:-squash
verpflichten, die in übergeordnete Zweig. Also auf der einen Seite haben Sie Reiniger Geschichte, sondern um die Erkennung von merge origin ist ein bisschen härterInformationsquelleAutor Marina Liu - MSFT