Sie könnten von dem Workflow profitieren, den Scott Chacon in Pro Git beschreibt . In diesem Workflow gibt es zwei Zweige, die immer existieren: Master und Entwicklung .
master stellt die stabilste Version Ihres Projekts dar und Sie stellen immer nur von diesem Zweig aus für die Produktion bereit.
Die Entwicklung enthält Änderungen, die gerade ausgeführt werden und möglicherweise nicht unbedingt produktionsbereit sind.
In der Entwicklungsniederlassung erstellen Sie Themenzweige, um an einzelnen Funktionen und Korrekturen zu arbeiten. Sobald Ihr Feature / Fix einsatzbereit ist, führen Sie es in die Entwicklung ein . An diesem Punkt können Sie testen, wie es mit anderen Themenbereichen interagiert, in denen Ihre Mitarbeiter zusammengeführt wurden. Sobald sich die Entwicklung in einem stabilen Zustand befindet, führen Sie es in den Master ein . Die Bereitstellung in der Produktion vom Master aus sollte immer sicher sein .
Scott beschreibt diese langjährigen Zweige als "Silos" von Code, in denen Code in einem weniger stabilen Zweig nach dem Testen und der allgemeinen Genehmigung durch Ihr Team schließlich zu einem "stabileren" Zweig "graduiert" wird.
Schritt für Schritt könnte Ihr Workflow unter diesem Modell folgendermaßen aussehen:
- Sie müssen einen Fehler beheben.
- Erstellen Sie einen Zweig namens myfix , der auf dem Entwicklungszweig basiert .
- Arbeiten Sie an dem Fehler in diesem Themenzweig, bis er behoben ist.
- Merge MyFix in der Entwicklung . Führen Sie Tests durch.
- Sie entdecken Ihre Fixkonflikte mit einem anderen Themenzweig hisfix , den Ihr Mitarbeiter während der Arbeit an Ihrem Fix zur Entwicklung zusammengeführt hat .
- Nehmen Sie weitere Änderungen im Zweig myfix vor , um diese Konflikte zu beheben .
- Merge MyFix in der Entwicklung wieder Tests und laufen.
- Alles funktioniert gut. Merge entwickeln in Master .
- Stellen Sie die Produktion jederzeit vom Master aus bereit , da Sie wissen, dass sie stabil ist.
Weitere Informationen zu diesem Workflow finden Sie im Kapitel Verzweigungsworkflows in Pro Git.
develop
ist eine unnötige "Lösung" für ein Problem, das Git nicht hat. Soweit ich das beurteilen kann, ist der Erfolg auf einen gut geschriebenen, wenn auch fehlgeleiteten Artikel zurückzuführen, für den keine Kommentare zulässig sind. Hier ist ein Gegenartikel barro.github.io/2016/02/…Nachdem er als Anfänger reingekommen war und versucht hatte, eine einfache Strategie zu finden, um anderen Entwicklern beizubringen, die noch nie die Quellcodeverwaltung verwendet haben. Dies ist derjenige, der zu http://nvie.com/posts/a-successful-git-branching-model/ passt. Ich habe versucht, den Standard-GIT-Workflow zu verwenden, der in den Manpages enthalten ist, aber er hat mich und mein Publikum völlig verwirrt.
In den letzten 6 Monaten musste ich Konflikte nur zweimal beheben. Ich habe Schritte hinzugefügt, um immer nach einer Zusammenführung zu testen und viel (einmal am Morgen und am Nachmittag) zu "holen und zusammenzuführen" oder "zu ziehen", während ich Funktionen entwickle. Wir haben auch github.com als zentralen Ort verwendet, um den neuesten Code abzurufen.
quelle
default master branch
NICHT am häufigsten als Entwickler verwendet wirdA successful Git branching model
(Mein Kommentar über seiner eigenen Antwort wurde gemacht, wie ich es ursprünglich hätte tun sollen.)
Von Scott Chacon aus Github:
Weitere Informationen finden Sie im gesamten Artikel: http://scottchacon.com/2011/08/31/github-flow.html
Beachten Sie, dass "Pull-Anfragen" eine Erfindung von Github sind und in ihre Website eingebrannt sind, nicht in Git selbst: https://help.github.com/articles/using-pull-requests/
quelle
Verwenden Sie den
master
Zweig als Entwicklungszweig und erstellen Sie Release-Zweige, um Fehlerbehebungen durchzuführen.Alle neuen Funktionen werden
master
während des Entwicklungsfensters fortgesetzt (entweder direkt festgeschrieben oder als Themenzweige mit Pull-Anforderungen an Sie - nicht in der Grafik dargestellt). Sobald alle geplanten Funktionen implementiert sind, geben Sie Feature Freeze ein und führen Sie Tests durch. Wenn Sie zufrieden sind, markieren Sie die Veröffentlichungmaster
alsv1.0
.Im Laufe der Zeit werden Ihre Benutzer Fehler finden,
v1.0
daher sollten Sie aus diesem Tag einen Zweig erstellen (z. B. nach der Veröffentlichung benennen1.0
) und diese Fehler im Zweig beheben. Wenn Sie genug Fehler behoben haben, von denen Sie glauben, dass sie eine neue Version rechtfertigen, markieren Sie sie alsv1.0.1
und führen Sie sie wieder zusammenmaster
.In der Zwischenzeit kann ein neues Entwicklungsfenster für den
master
Zweig entstehen, das schließlich als gekennzeichnet wirdv1.1
.Spülen & wiederholen.
Dies folgt der Nummerierungslogik der semantischen Versionierung .
quelle
1.0.1
Änderungen wieder inmaster
1.1
nach dem Zusammenführen den Master neu zu starten1.0.1
- dies hilft, Verwirrung zu minimieren.1.1
ist ein Release-Zweig und verfügt über Tags, die den genauen Status eines oder mehrerer Releases darstellen. Wenn Sie diesen Zweig erneut aufbauen, verlieren Sie diese Darstellung. Ich würde dringend empfehlen, Ihre Release-Zweige so einzustellen, dass Force-Pushs verweigert werden, um dies zu verhindern.In einem VCS zeigt ein "Master" -Zweig schnell seine Grenzen, da Sie nicht den gesamten Entwicklungsaufwand gleichzeitig für einen Zweig ausführen können.
Das heißt, Sie müssen wissen, wann Sie verzweigen müssen .
In einem DVCS (wie in "Dezentralisiertem" VCS) gibt es jedoch auch ein Veröffentlichungsproblem mit Zweigen, die Sie lokal in Ihren Repositorys aufbewahren, und Zweigen, in die Sie pushen oder aus denen Sie ziehen.
Identifizieren Sie in diesem Zusammenhang zunächst Ihren gleichzeitigen Entwicklungsaufwand und entscheiden Sie sich für einen Veröffentlichungsprozess (Push / Pull). Zum Beispiel (und dies ist nicht der einzige Weg):
Niemand sollte direkt auf Prod drücken (daher der schreibgeschützte Zweig ).
Jeder kann auf die Veröffentlichung drängen, um die nächste Version zu aktualisieren.
Jeder kann von dieser Version abrufen, um seinen lokalen Konsolidierungsprozess zu aktualisieren.
Es gibt andere Release-Management-Prozesse, wie diese SO-Frage bestätigt .
quelle
Lesen Sie hier den Git Workflow für agile Teams von ReinH: http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html
Dies funktioniert sehr gut für kleine Teams. Ziel ist es, sicherzustellen, dass alles, was möglicherweise instabil ist, in eine Zweigstelle gelangt. Führen Sie die Verbindung erst dann zum Master zurück, wenn Sie bereit sind, dass alle Mitarbeiter außerhalb des Feature-Zweigs sie verwenden.
Hinweis: Diese Strategie ist kaum git-spezifisch, aber git macht die Implementierung dieser Strategie ziemlich einfach.
quelle