Ich habe kürzlich die Aufgabe bekommen, einem Projekt, an dem ich arbeite, eine bestimmte Funktion hinzuzufügen. Da diese Funktion von altem Code abhängt, der grausam zu verwenden war, entschied ich mich, die Aufgabe in 2 Schritten aufzuteilen:
Ich habe einen Zweig feat / foo erstellt, und nachdem das Refactoring durchgeführt wurde, habe ich es in unseren Master integriert, damit wir die Änderungen direkt verwenden können. Jetzt habe ich den folgenden Commit-Verlauf:
%Vor%feat / foo zeigt immer noch auf D, und mein Meister machte Fortschritte, um Commit F zu sein. Was würde ich jetzt tun, um meine Arbeit an dieser Aufgabe in Branch feat / foo fortzusetzen? Ich sehe zwei Möglichkeiten:
checkout -b
wieder, also habe ich einen neuen Zweig, der den gleichen Namen wie mein alter Zweig Die erste Lösung fühlt sich irgendwie nicht ganz richtig an, es scheint "falsch" zu sein, den Zweig zu löschen, nur um ihn neu zu erstellen. Aber ich weiß nicht, wie ich es wiederverwenden könnte.
Was soll ich tun? Löschen Sie die Verzweigung und erstellen Sie sie erneut, oder wenn die richtige Antwort sie wiederverwenden würde, wie?
In vielen Workflows wurde ein Feature-Zweig, nachdem er wieder in master
zusammengeführt wurde, gelöscht. GitHub ist wahrscheinlich das beste Beispiel dafür. Wenn Sie dieser Denkweise folgen, würden Sie feat/foo
löschen und einen neuen Feature-Zweig für Ihren nächsten Sprint erstellen.
Wenn Sie den Zweig wirklich weiter verwenden möchten, müssen Sie entweder feat/foo
für master
neu erstellen oder master
für feat/foo
. Ich sehe keinen Vorteil für das Rebasing, was chaotisch sein könnte. Sie haben feat/foo
in master
bei commit E
zusammengeführt. Daher hat master
bereits alle Features von feat/foo
, aber das Umgekehrte ist nicht wahr, d. H.% Co_de% fehlt wahrscheinlich mehrere Features, die in feat/foo
seit commit master
eingeführt wurden. Um die Zusammenführung durchzuführen, würden Sie diesen Befehl verwenden:
Sie müssen möglicherweise Zusammenführungskonflikte lösen, die durch neue Features in D
entstehen, die noch nicht im Zweig master
sind.
Jetzt ist der Zweig feat/foo
auf dem neuesten Stand mit dem Master und Sie können ihn weiterhin verwenden, wenn Sie möchten. Persönlich würde ich feat/foo
einfach dort lassen, wo es ist, und einen völlig neuen Feature-Zweig erstellen. Sie können es für ein paar Sprints behalten, bis Sie sicher sind, dass Sie es sicher löschen.
Da Sie weiter am Zweig feat/foo
arbeiten müssen, müssen Sie es als erstes auschecken:
Da Sie die Arbeit an der neuen Funktion nicht abgeschlossen haben, arbeiten Sie weiter und verpflichten sich in der Verzweigung, bis Sie die Arbeit abgeschlossen haben und bereit sind, sie wieder in die Masterfunktion einzubinden.
Von Zeit zu Zeit ist es gut, die letzten Änderungen aus dem Master-Zweig in den Zweig zu ziehen. Sie tun das, indem Sie Folgendes ausführen:
%Vor%, während Sie sich im Zweig feat/foo
befinden.
Es macht wenig Sinn, den Zweig zu entfernen, nur um ihn erneut zu erstellen. git checkout feat/foo
gefolgt von git merge master
erzeugt das gleiche Ergebnis.
Tags und Links git