Ich habe einen Zweig namens master
und einen anderen namens dev
. Normalerweise mache ich Tests und Verbesserungen an dev
, und wenn entschieden wird, ist es in Ordnung, ich füge es in master
ein, markiere und veröffentliche dann eine neue Version der Anwendung. Ich habe zwei Fälle von Verschmelzung getroffen:
master
in dev
und dev
in master
, aber ich bin nicht wirklich sicher, wie die beiden anders sind ... Jede Erklärung wäre willkommen.
Der Hauptunterschied liegt darin, wo die Zweige master
und dev
am Ende zeigen.
Das Zusammenführen eines Zweiges zu einem anderen ist keine symmetrische Operation:
dev
in master
und master
in dev
, sind im Allgemeinen nicht gleichwertig. Hier ist ein illustratives Beispiel, das den Unterschied zwischen den beiden erklärt. Nehmen wir an, Ihr Repo sieht folgendermaßen aus:
dev
in master
zusammenführen
Wenn master
ausgecheckt ist ( git checkout master
),
und Sie dann dev
( git merge dev
) zusammenführen, werden Sie in der folgenden Situation landen:
Der Zweig master
verweist nun auf das neue Zusammenführungs-Commit ( F
), während dev
immer noch auf dasselbe Commit ( E
) verweist wie vor der Zusammenführung.
master
in dev
zusammenführen
Wenn andererseits dev
ausgecheckt wird ( git checkout dev
),
und Sie dann master
( git merge master
) zusammenführen, werden Sie in der folgenden Situation landen:
Der Zweig dev
verweist jetzt auf das neue Zusammenführungs-Commit ( F'
, während master
immer noch auf dasselbe Commit verweist wie vor der Zusammenführung ( D
).