Git mit Entwicklungs-, Inszenierungs- und Produktionszweigen

74

Dieser Artikel klingt interessant, aber ich bin mir ziemlich sicher, dass die Diagramme falsch sind. http://guides.beanstalkapp.com/version-control/branching-best-practices.html

Sollte es nicht sein DEVELOPMENT> STAGING> PRODUCTION?

Zusammenführungen sollten nur in eine Richtung erfolgen: von Funktionen und Fehlerkorrekturen, die in ihrem eigenen Zweig oder in der Entwicklung durchgeführt wurden, bis hin zu Staging zum Testen. Nach dem Testen können Sie diese Änderungen von der Entwicklung bis zur Produktion zusammenführen.

Hier bin ich etwas verwirrt. Also füge ich Staging zu Master oder Master zu Staging zusammen?

Ich verwende einen Client namens SmartGit und bin über diesen Punkt verwirrt. Normalerweise erstelle ich einen Zweig für ein Feature, verpflichte mich dazu, wechsle dann zum Master und füge ihn zum Zweig zusammen (vorwärts). In diesem neuen Workflow mit Staging und Produktion erstelle ich diese beiden zusätzlichen Zweige und erstelle dann einen Zweig vom Master (auch bekannt als dev) für meine Funktion. Festschreiben, dann zu Staging wechseln und zu meinem Feature-Zweig zusammenführen (weiterleiten)? Klingt das richtig?


Was dies so verwirrend gemacht hat, ist, dass die Beanstalk-Leute hinter ihrer sehr ungewöhnlichen Verwendung von Staging stehen (dies kommt vor der Entwicklung in ihrem Diagramm und ist kein Fehler! Https://twitter.com/Beanstalkapp/status/306129447885631488)

Habe beschlossen, Beanstalk zu vergessen und einfach mit Github zu gehen.


Seit ich dies gepostet habe, haben die Beanstalk-Leute meinen Hinweis befolgt und ihre Stufen umbenannt und nennen die Entwicklung nun "Stabil".

Max Hodges
quelle
1
Sie möchten Fixes von der Bereitstellung zur Produktion zusammenführen. Das Zusammenführen mit Staging zum Zweck des Testens und anschließendes Zusammenführen der Entwicklung mit der Produktion nach Abschluss des Tests lässt die Möglichkeit offen, dass zusätzliche Arbeiten an der Entwicklung mit der Produktion zusammengeführt werden, die nie mit dem Staging zusammengeführt wurde.
Wadesworld
Klassische Verzweigungsworkflows lassen sich nicht einfach auf Git anwenden, da Verzweigungen in Git viel einfacher sind. Sie sind nur Zeiger auf (einzelne) Commits innerhalb der Geschichte, die sich in viele Richtungen verzweigen können. Aus diesem Grund ist es schwierig, Zweige als „Linie“ einer getrennten Entwicklung zu sehen (dies gilt auch für die Diagramme in „Ein erfolgreiches Git-Verzweigungsmodell“).
Poke
Ja, es sind nicht gerade Schwimmbahnen. Meine Frage lautet jedoch genauer: Wechsle ich zu Staging und füge mich zu dev zusammen oder umgekehrt? Ich bin neu in der Sache und bin verwirrt darüber. Vielleicht sollte ich die Frage direkt an die Hersteller von SmartGit, meinem Windows Git-Client, richten.
Max Hodges
Eine genaue Frage, nach der ich gesucht habe. Google gesucht und diese auf der ersten Nummer erhalten. Yaay (y)
NullPointer

Antworten:

85

Der Denkprozess hier ist, dass Sie die meiste Zeit in verbringen development. Während der Entwicklung erstellen Sie einen featureZweig (aus development), vervollständigen das Feature und führen ihn wieder zusammen development. Dies kann dann durch Zusammenführen in zur endgültigen Produktionsversion hinzugefügt werden production.

Weitere Informationen zu diesem Ansatz finden Sie unter Ein erfolgreiches Git-Verzweigungsmodell .

eykanal
quelle
24
+1 für "Ein erfolgreiches Git-Verzweigungsmodell". Dies ist im Grunde genommen der Standard für Git-Workflows.
Mike Weller
10
"Ein erfolgreiches Git-Verzweigungsmodell" ist für kleinere Projekte mit nur wenigen Beteiligten etwas komplex. Ich bevorzuge eine einfachere Methode, bei der die Entwicklung im Hauptzweig erfolgt und stabile Versionen im Hauptzweig markiert sind und bei Bedarf einen stabilen Zweig für Patches haben. Siehe stackoverflow.com/questions/14858075/… und scottchacon.com/2011/08/31/github-flow.html
Josef Kufner
1
danke @JosefKufner Der Github Flow Artikel war sehr hilfreich
Max Hodges
2
@eykanal Verschmelzst du developmentin productionoder featurein production?
Endo64
3
In diesem Artikel gibt es keinen Staging-Zweig. Wie werden sie vom Entwicklungsserver zum Staging bereitgestellt? Ich sehe nur, wie sie direkt von der Entwicklung zur Produktion bereitgestellt werden - führen Sie den Entwicklungszweig zum Master zusammen, aber dies ist nicht sicher, da die Staging-Umgebung übersprungen wird, nicht wahr?
Raz
5

Wir machen es anders. IMHO machen wir es einfacher: in arbeiten masterwir an der nächsten Hauptversion.

Jedes größere Feature erhält einen eigenen Zweig (abgeleitet vom Master) und wird vom Entwickler regelmäßig auf dem Master neu basiert (+ Force Push). Das Wiederherstellen funktioniert nur, wenn ein einzelner Entwickler mit dieser Funktion arbeitet. Wenn die Funktion beendet ist, wird sie neu auf den Master übertragen und der Master wird dann schnell zum neuesten Feature-Commit weitergeleitet.

Um das erneute Basieren / erzwungene Drücken zu vermeiden, können Master-Änderungen auch regelmäßig mit dem Feature-Zweig zusammengeführt werden. Wenn der Vorgang abgeschlossen ist, wird der Feature-Zweig mit dem Master zusammengeführt (normale Zusammenführung oder Squash-Zusammenführung). Aber meiner Meinung nach macht dies den Feature-Zweig weniger klar und macht es viel schwieriger, die Commits neu zu ordnen / bereinigen.

Wenn eine neue Version kommt, erstellen wir einen Nebenzweig aus dem Master, z. B. release-5wo nur Fehler behoben werden.

Mot
quelle
8
Ich habe keine Ahnung, was das alles bedeutet.
Max Hodges
6
Was genau verstehst du nicht?
Mot
1

Eines der besten Dinge an Git ist, dass Sie den für Sie am besten geeigneten Arbeitsablauf ändern können. Ich verwende jedoch meistens http://nvie.com/posts/a-successful-git-branching-model/ Sie können jeden Workflow verwenden, der Ihren Anforderungen entspricht

JohnNY
quelle