Git Flow - Feature-Zweig aus einem anderen Feature-Zweig erstellen


85

Ich benutze es git flowjetzt schon eine Weile. Ich bin neugierig auf einen bestimmten Anwendungsfall.

Für eines meiner Projekte habe ich ein Ticket für eine neue Website-Funktion. Dieses Ticket hängt von vielen Unteraufgaben ab. Ich möchte einen Feature-Zweig für das Hauptticket erstellen und dann für jede Unteraufgabe einen Feature-Zweig außerhalb des übergeordneten Feature-Zweigs erstellen.

Nehmen wir an, ich habe ein Ticket PROJ-500 und erstelle einen Feature-Zweig dafür

git flow feature start PROJ-500

Dann möchte ich Karten integrieren PROJ-501durch PROJ-515in PROJ-500vor das Ganze in der Integration develop. Gibt es eine Möglichkeit für mich, so etwas zu tun?

git flow feature start PROJ-511 -b PROJ-500

Mit der Zeit werden diese Unteraufgaben dann erledigt, und wenn ihre Funktion abgeschlossen ist, wird der Zweig zusammengeführt PROJ-500.

git flow feature finish PROJ-511

Der obige Befehl würde fusionieren PROJ-511inPROJ-500

Sobald alle Unteraufgaben erledigt sind, werden sie erledigt PROJ-500und zusammengeführt develop.

Auf diese Weise wird die neue Website-Funktion als einzelne Einheit und nicht stückweise in die Entwicklung integriert.


Tut das nicht? git flow feature start PROJ-511 PROJ-500? Der Link, den Sie im Kommentar zur Antwort von DerekS gepostet haben, schlägt vor, dass dies der Fall sein sollte.
Paul Hicks

Antworten:


115

Sie können einen Unterfeature-Zweig über erstellen

git flow feature start PROJ-511 feature/PROJ-500

Sie können das GitFlow-Tool jedoch nicht verwenden, um den Zweig wieder mit dem Hauptfeature-Zweig zusammenzuführen, da dies der Fall ist

git flow feature finish PROJ-511

Die Funktion wird in zusammengeführt develop. Ergo- Unterfunktionen werden nicht unterstützt , Sie müssen dies manuell tun.

Alternativen: Die Anforderung ist jedoch nicht neu. Es gibt ein offenes Problem sowie ein Gabelprojekt, das behauptet, Finishing-Funktionen in anderen Zweigen als zu unterstützen develop. Ich habe auch eine Pull-Anfrage mit einer Implementierung dieser Funktion gefunden. Vielleicht möchten Sie diese Änderung ausprobieren und sehen, ob Sie damit zufrieden sind.


Update 2019-12-13: Als Benutzer Matěj Kříž gerade in seinem Kommentar erwähnt hat, hat Benutzer Tony Chemit hier einige Monate nach meiner Antwort eine Antwort geschrieben , die auf gitflow-avh als Alternative zum ursprünglichen gitflow-Produkt verweist. Es unterstützt sofort einsatzbereite Unterfunktionen mit der oben gezeigten Syntax. Einige Jahre sind vergangen und heutzutage ist die AVH-Edition Teil der normalen Installation von Git für Windows. Ich habe dies nur auf meiner lokalen Box überprüft und die Unterfunktionsoption getestet. Dh für Windows-Benutzer funktioniert es direkt nach der Git-Installation.


1
@pymarco: Danke, dass du die Antwort angenommen hast. Ich bin allerdings neugierig: Haben Sie eine der Alternativen ausprobiert? Wenn ja, welches und was war das Ergebnis? Funktioniert es wie erwartet? Vielleicht können andere Leser etwas aus Ihrer Erfahrung lernen. :-)
Kriegaex

Entschuldigung, aber ich hatte keine Zeit, darauf zurückzukommen. Ich werde es irgendwann versuchen.
Pymarco

3
Warum das Downvote? Downvotes sind für schlecht geschriebene, schlampige Antworten gedacht, die keine Anzeichen von Forschungsaufwand oder Wissen zeigen. Trotzdem danke.
Kriegaex

Wenn Sie die gitflow-avh- Version verwenden, schauen Sie unter stackoverflow.com/a/29353800/472611 @ tony-chemit answer
Matěj Kříž


11

Wie bereits erwähnt, können wir eine neue Funktion mit jedem Basiszweig mit starten

git flow feature start PROJ-511 feature/PROJ-500

Und um das Unter-Feature zu beenden, können wir die Git-Flow-Konfiguration vorübergehend ändern, um unseren Feature-Zweig anstelle von develop:

git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511

Auf diese Weise führt git flow alle Befehle und Überprüfungen der Integrität aus. Um die Konfiguration wiederherzustellen, können wir schließlich ausführen

git flow config set develop develop 

9

Ich glaube nicht, dass es dafür eine Methode im Git Flow gibt, aber es ist ziemlich einfach mit nur Git.

git checkout PROJ-500
git checkout -b PROJ-511
...do your PROJ-511 work...
git checkout PROJ-500
git merge PROJ-511
git branch -d PROJ-511

2
Danke Derek für die Antwort. Ja, ich könnte diesem Workflow folgen. Aber Git Flow enthält eine Reihe von Befehlen und Überprüfungen, die ich lieber für die Entwicklung von Unterfunktionen verwende. Zum Beispiel ist hier ein Link zur Git-Flow-Funktion - github.com/nvie/gitflow/blob/develop/git-flow-feature
pymarco
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.