Eine Schlüsselsache, die Git-Flow ansprechen sollte, war die Fähigkeit, über die Rolle eines bestimmten Zweigs nachzudenken und darüber, von wo er abzweigt und zu welchem Zweig er verschmilzt.
Im Idealfall werden alle Zweige auf die Codeline zurückgeführt, von der aus sie zusammengeführt wurden. Dies ist in der Regel eine Zusammenführung von der Hauptlinie (in Git-Flow ist dies dev
). Feature-Verzweigungen verzweigen und von dev zusammenführen, Release-Verzweigungen verzweigen und von dev zusammenführen (mit einem zusätzlichen Merge nach master
). Hotfixes verzweigen und vom Master zusammenführen (mit diesem zusätzlichen Zusammenführen zurück zum Entwickler).
Jede Codeline verzweigt sich von der übergeordneten Codeline und wird mit dieser zusammengeführt. Eine Codeline kann bei Bedarf jederzeit Code aus anderen Codelines abrufen.
Wenn es sich bei der Verzweigung aus einer Feature-Verzweigung um "Ich möchte auf diese Weise ein Problem in dieser Feature-Verzweigung beheben" handelt, ist dies in Ordnung. Es verzweigt vom Feature-Zweig, schreibt Code fest und führt zum Feature-Zweig zurück (oder wird verworfen).
- Verzweigen von Merkmal
- Idee erforschen
- zum Feature zusammenführen
Was Sie jedoch vermeiden möchten, sieht folgendermaßen aus:
- Verzweigen von erforderlicher Funktion
- Code bearbeiten
- Von dev zusammenführen, sobald die erforderliche Funktion abgeschlossen ist
- Überprüfen Sie die Funktionalität (und zusätzliche Commits) im Feature-Zweig
- verschmelze zu dev
Der Grund dafür ist, dass Anfang und Ende nicht übereinstimmen - es ist etwas schwieriger zu verstehen, was dies ist und war. Nicht unmöglich, aber es dauert ein bisschen länger, bis jemand seine Rolle versteht.
Wenn dies jedoch eine neue Funktion ist, die von Code abhängt, der noch nicht in dev gefunden wurde, sollte der Ablauf folgendermaßen aussehen:
- zweig von dev
- Von erforderlicher Funktion zusammenführen
- Code bearbeiten
- Von dev zusammenführen, sobald die erforderliche Funktion abgeschlossen ist
- Überprüfen Sie die Funktionalität (und zusätzliche Commits) im Feature-Zweig
- verschmelze zu dev
Beachten Sie, dass dies mit einer Verzweigung von dev beginnt und mit einer Zusammenführung zu dev endet.
Alles, was gesagt wird, ist wahrscheinlich das Beste, das Zusammenführen von einem Feature zu einem anderen Feature zu vermeiden. Verzweigen Sie die Funktion, führen Sie alle erforderlichen Vorbereitungen durch ... und warten Sie.
- zweig von dev
- Code bearbeiten
- Von dev zusammenführen, sobald die erforderliche Funktion abgeschlossen ist
- Überprüfen Sie die Funktionalität (und zusätzliche Commits) im Feature-Zweig
- verschmelze zu dev
Dies bietet die stabilsten Verzweigungen und den stabilsten Code.
Für die zukünftige Arbeit sollte eine Funktion zum Veröffentlichen der für die Interoperabilität mit anderen Funktionen erforderlichen Schnittstellen in Betracht gezogen werden - auch wenn der Implementierungscode nicht vollständig ist. Dies würde zu dev zusammengeführt, und das erforderliche Feature könnte dann von diesen Schnittstellen abarbeiten, ebenso wie das zukünftige Feature. Dies würde wahrscheinlich dazu führen, dass das zukünftige Feature weitere Fortschritte erzielt (Codierung anhand der Schnittstellen, Testen anhand von Stubbs, die die Schnittstellen implementieren), als wenn es warten müsste, bis das erforderliche Feature zu dev zusammengeführt wird.