Wir haben vor kurzem begonnen, GitLab zu verwenden.
Derzeit wird ein "zentraler" Workflow verwendet.
Wir überlegen, auf den Github-Flow umzusteigen, aber ich möchte sichergehen.
Was sind die Vor- und Nachteile von Git-Flow gegenüber Github-Flow ?
Wir haben vor kurzem begonnen, GitLab zu verwenden.
Derzeit wird ein "zentraler" Workflow verwendet.
Wir überlegen, auf den Github-Flow umzusteigen, aber ich möchte sichergehen.
Was sind die Vor- und Nachteile von Git-Flow gegenüber Github-Flow ?
Antworten:
Wie in GitMinutes Episode 17 von Nicholas Zakas in seinem Artikel über " GitHub-Workflows innerhalb eines Unternehmens " beschrieben:
Git-Flow ist ein Prozess zum Verwalten von Änderungen in Git, der von Vincent Driessen erstellt wurde und von einigen Git-Erweiterungen zum Verwalten dieses Flusses begleitet wird.
Die allgemeine Idee hinter Git-Flow ist mehrere getrennte Zweige zu haben , die immer, die jeweils für einen anderen Zweck existieren:master
,develop
,feature
,release
, undhotfix
.
Der Prozess der Feature- oder Fehlerentwicklung fließt von einem Zweig in einen anderen, bevor er endgültig veröffentlicht wird.Einige der Befragten gaben an, dass sie
git-flow
im Allgemeinen verwenden.
Einige begannen damitgit-flow
und gingen davon weg.Der Hauptgrund für die Abkehr ist, dass der
git-flow
Prozess in einem kontinuierlichen (oder nahezu kontinuierlichen) Bereitstellungsmodell schwer zu bewältigen ist.
Das allgemeine Gefühl ist, dass esgit-flow
für Produkte in einem traditionelleren Release-Modell gut funktioniert, bei dem Releases alle paar Wochen durchgeführt werden, dieser Prozess jedoch erheblich unterbrochen wird, wenn Sie einmal am Tag oder öfter veröffentlichen .
Zusamenfassend:
Beginnen Sie mit einem Modell, das so einfach wie möglich ist (wie es GitHub Flow normalerweise tut), und wechseln Sie bei Bedarf zu einem komplexeren Modell.
Eine interessante Illustration eines einfachen Workflows, der auf GitHub-Flow basiert, finden Sie unter:
" Ein einfaches Git-Verzweigungsmodell ". Die Hauptelemente sind:
master
muss immer bereit sein.- alle Änderungen, die über Feature-Zweige vorgenommen wurden (Pull-Request + Merge)
- Rebase zur Vermeidung / Lösung von Konflikten; Vereinen
master
Einen tatsächlich vollständigeren und robusteren Workflow finden Sie unter Gitworkflow (ein Wort) .
Es gibt keinen Silver Bullet-Workflow, dem jeder folgen sollte, da alle Modelle nicht optimal sind. Trotzdem können Sie das geeignete Modell für Ihre Software anhand der folgenden Punkte auswählen.
Mehrere Versionen in der Produktion - verwenden Sie Git-Flow
Wenn Ihr Code mehrere Versionen in der Produktion hat (dh typische Softwareprodukte wie Betriebssysteme, Office-Pakete, benutzerdefinierte Anwendungen usw.), können Sie git-flow verwenden. Hauptgrund ist, dass Sie frühere Versionen in der Produktion kontinuierlich unterstützen müssen, während Sie die nächste Version entwickeln.
Einzelversion in der Produktion einfache Software - verwenden Sie Github-Flow
Wenn Ihr Code immer nur eine Version in der Produktion hat (z. B. Websites, Webdienste usw.), können Sie github-flow verwenden. Hauptgrund ist, dass Sie für den Entwickler keine komplexen Dinge benötigen. Sobald der Entwickler ein Feature oder einen Bugfix fertiggestellt hat, wird er sofort zur Produktionsversion hochgestuft.
Einzelversion in der Produktion, aber sehr komplexe Software - verwenden Sie Gitlab-Flow
Bei großer Software wie Facebook und Google Mail müssen Sie möglicherweise Bereitstellungszweige zwischen Ihrem Zweig und dem Hauptzweig einführen, in denen CI / CD> -Tools ausgeführt werden können, bevor sie in die Produktion gelangen. Die Idee ist, die Produktionsversion besser zu schützen, da sie von Millionen von Menschen verwendet wird.
Ich benutze das Git-Flow-Modell seit über einem Jahr und es ist in Ordnung.
Aber es hängt wirklich davon ab, wie Ihre Anwendung entwickelt und bereitgestellt wird.
Dies funktioniert gut, wenn Sie eine Anwendung mit einem langsamen Entwicklungs- / Bereitstellungsfluss haben.
Aber zum Beispiel haben wir wie GitHub eine Anwendung mit einem schnellen Entwicklungs- / Bereitstellungsablauf, die wir täglich bereitstellen, und manchmal mehrmals am Tag. In diesem Fall verlangsamt Git-Flow meiner Meinung nach alles, und ich verwende GitHub fließen.
Die andere zu berücksichtigende Sache ist, dass Git-Flow kein Standard-Git ist, also könnten Sie, und wenn ich sage, dass Sie es könnten, ich meine wirklich, Sie werden Entwickler finden, die es nicht wissen, und dann gibt es die Lernkurve, mehr Chance, Dinge durcheinander zu bringen. Wie oben erwähnt, hat jemand eine Reihe von Skripten entwickelt, um die Verwendung von git-flow zu vereinfachen. Sie müssen sich also nicht alle Befehle merken, es hilft Ihnen bei den Befehlen, aber es ist Ihre Aufgabe, sich an den tatsächlichen Ablauf zu erinnern Ich bin mehr als einmal darauf gestoßen, als ein Entwickler nicht wusste, ob es sich um einen Hotfix oder eine Funktion handelt, oder sogar am schlimmsten, wenn er sich nicht an den Ablauf erinnern und die Dinge vollstopfen kann.
Es gibt mindestens eine GUI, die Git-Flow für Mac und Windows SourceTree unterstützt .
Heutzutage neige ich aufgrund seiner Einfachheit und einfachen Verwaltung eher zum GitHub-Flow. Auch wegen "häufig frühzeitig bereitstellen" ...
Hoffe das hilft
git flow release...
in Kombination mit Github-Aktionen die Anwendung bereitzustellen. In meiner ursprünglichen Antwort erwähnte ich, dass wir mehrmals am Tag veröffentlicht haben. Dies verursachte Probleme bei der Verwendung von Git-Flow. Der Grund, warum ich denke, dass Git-Flow in diesem Projekt gut funktionieren wird, ist, dass wir einen vordefinierten Release-Zyklus haben, der eines der Hauptverkaufsargumente für die Verwendung von Git-Flow ist.