2016-03-30 12 views
1

Ich habe das Bild unten aus Gründen der Privatsphäre redated, aber im Grunde habe ich zwei Zweige, die ich versuche, auf dem gleichen Commit zu bekommen. Das Commit mit dem Tag 4.3.1.11 befindet sich auf einem anderen Zweig als das mit dem Tag 4.3.1.13. Ich habe versucht, 4.3.1.11 in 4.3.1.13 zusammenzuführen, aber nichts ändert sich.Wie bekomme ich einen anderen Git-Zweig bis zum aktuellen Zweig?

Ich versuche einfach beide Zweige auf dem gleichen Commit zu bekommen.

Wie mache ich das? Ich weiß, dass ähnliche Fragen gestellt wurden, aber ich sehe kein Szenario wie meines, das beantwortet wurde.

enter image description here

+0

Werfen Sie einen Blick auf Merge-Strategien (unsere/ihre) –

+0

Was ist mit dieser Frage passiert? – user2721815

+0

Die Frage macht nicht viel Sinn. In git ist eine Verzweigung (ohnehin ein Verzweigungsname) nur ein Zeiger auf eine Übergabe.Wenn Sie möchten, dass zwei Verzweigungsnamen auf das * selbe * Commit zeigen, erstellen Sie nur zwei Verzweigungsnamen, die auf dasselbe Commit verweisen. Siehe http://stackoverflow.com/q/25068543/1256452 – torek

Antwort

0

Sie haben einfach die Änderungen von Ihnen 2 Zweige zu verschmelzen.

Jetzt wird branchB auch den Code von Zweig A enthalten

0

Es kann eine Verwechslung mit den Begriffen zusammenfassen und Commit. In git ist ein Commit einfach ein Delta zwischen zwei Änderungen im Kontext. Ein Zusammenführen ist ein symbolisches Commit, das eine einzelne Entität darstellt, die die Zweige von zwei Elternteilen kombiniert.

Das ist anders als Revisionssysteme wie SVN, wo eine Zusammenführung eigentlich eine Sache ist. In git ist es sicherer, es als Strategie zu betrachten.

Also, wenn Sie einen Punkt in der Repo A und einen anderen Punkt B haben, werden sie über einen Pfad miteinander verbinden (es sei denn, sie sind auf 2 separate verwaiste Zweige). Um Git einen Punkt C zu geben, der als Erweiterung des Zweiges A oder B betrachtet werden kann, aber ein symbolisches Zusammenführen von A nach B oder B in A ist, berücksichtigt git alle Unterschiede entlang des Pfades zurück up die Abstammung von A und B, bis es ein gemeinsames Elternteil findet.

Also, wenn O-A und O-B der Pfad zum Erstellen von O-A-C (wo C ist Ihre Zusammenführung) berücksichtigt B-O-A als Pfad.

Das ist verwirrend, weil Sie O-B als das, was Sie verschmelzen möchten, betrachten und O-A vergessen haben. Aber es ist logisch. Wenn in Ihrem Beispiel 4.3.1.11 A, Ursprung/Entwicklung B und 4.3.1.13 G ist, können Sie sehen, dass Ihr Zweigbaum einfach A-B-C-D-E-F-G ist. Um von A nach G zu kommen, geht man einfach am Baum entlang (man kann schnell vorspulen).

Um es anders auszudrücken, G enthält A bereits, es hat nur die Deltas B-G bereits angewendet, so klar ist der Nettoeffekt einer Strategie, zu sagen 'nichts zu tun'.

In Ihrem Beispiel sind 4.3.1.11 und 4.3.1.13 Tags, also per Definition nicht verschieben. Wie Sie in Ihrer Antwort kommentiert haben, können Sie git branch -f verwenden, um einen Verzweigungszeiger zu einem neuen Commit zu verschieben, aber das ist keine Zusammenführung. Sie könnten auch git revert verwenden, um eine Festschreibung zu entfernen (die git anfordert, eine inverse Festschreibung zu erstellen und diese zur Kette hinzuzufügen)

Verwandte Themen