Git Wiederverwendung Zweig oder löschen und neu erstellen

9

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:

  • Reflektieren Sie alten Code, um besser nutzbar zu sein
  • Erstellen Sie Feature mit refaktoriertem Code

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:

  • lösche entweder feat / foo und checkout -b wieder, also habe ich einen neuen Zweig, der den gleichen Namen wie mein alter Zweig
  • hat
  • oder irgendwie "wiederverwenden" feat / foo, was ich nicht weiß, wie man

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?

    
Alex 14.08.2015, 09:36
quelle

2 Antworten

5

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:

%Vor%

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.

    
Tim Biegeleisen 14.08.2015, 09:46
quelle
5

Da Sie weiter am Zweig feat/foo arbeiten müssen, müssen Sie es als erstes auschecken:

%Vor%

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.

    
axiac 14.08.2015 09:50
quelle

Tags und Links