Über
+ ++ git-flow ist ein Set aus Git-Erweiterungen, welches komplexe Repository-Arbeiten + nach Vincent Driessen's Branching-Modell ermöglicht. + mehr +
+★ ★ ★
+ +Dieser Spickzettel veranschaulicht die grundlegende Nutzung und den Ablauf von git-flow Operationen.
+ +★ ★ ★
+Grundlegende Tipps
+-
+
- git-flow bietet eine exzellente Hilfe und ausführliche Ausgabe auf der Kommandozeile. Lies dir die Ausgaben aufmerksam durch und versuche zu verstehen, was passiert. +
- Der OSX/Windows Client SourceTree bietet ein exzellentes grafisches Interface und einfache Git-Flow Unterstützung. +
- git-flow ist eine rein Merge-basierte Lösung (Zusammenführung). Es findet kein Rebasing der Feature-Branches (Entwicklungszweige) statt. +
★ ★ ★
+Einrichtung
+-
+
- Du benötigst eine funktionierende Git Installation als Voraussetzung. +
- git-flow läuft unter OSX, Linux und Windows. +
★ ★ ★
+OSX
+ Homebrew ++ $ brew install git-flow ++ Macports +
+ $ port install git-flow ++
Linux
++ $ apt-get install git-flow ++
Windows (Cygwin)
++ $ wget -q -O - --no-check-certificate + https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash ++
Du benötigst wget und util-linux um git-flow zu installieren.
++ Für eine detaillierte git-flow Installationsanleitung, besuche bitte das git flow + wiki. +
+
Erste Schritte
+git-flow muss initalisiert werden, um das Projektsetup anzupassen.
+★ ★ ★
+Initialisierung
+ +Fange an mit git-flow zu arbeiten, indem Du es innerhalb eines bestehenden Git-Repository initialisierst:
++ git flow init ++
+ Dabei musst Du einige Fragen bezueglich der Namenskoventionen Deiner Branches (Entwicklungszweige) beantworten.
+ Es wird empfohlen, die Standardwerte zu verwenden.
+
Features
+ +-
+
- Entwicklung neuer Features für bevorstehende Releases. +
- In der Regel nur in Entwickler-Repositories zu finden. +
★ ★ ★
+ +Entwicklung neuer Features
+Neue Features werden vom 'develop'-Branch abgeleitet.
+Starte die Entwicklung eines neuen Features mittels
++ git flow feature start MYFEATURE ++
Dieser Befehl erstellt einen neuen Feature-Branch basierend auf 'develop' und wechselt in diesen.
+ + +Fertigstellung eines Features
+ ++ Beende die Entwicklung eines Features. + Dies führt zu folgenden Aktionen: +
+-
+
- Zusammenführen von MYFEATURE in den 'develop'-Branch (Merge-Prozess) +
- Entfernt den Feature-Branch +
- Wechselt zurück in den 'develop'-Branch +
+ git flow feature finish MYFEATURE ++
Veröffentlichen eines Features
+ +
+ Entwickelst Du ein Feature in Zusammenarbeit?
+ Veröffentliche Dein Feature auf einem entfernten Server,
+ so dass es auch von anderen verfolgt werden kann.
+
+ git flow feature publish MYFEATURE ++
Holen eines veröffentlichten Features
+ ++ Hole ein Feature, welches von einem anderen Nutzer veröffentlicht wurde. +
+ ++ git flow feature pull origin MYFEATURE ++ +
+ Du kannst ein Feature unter Verwendung von +
+git flow feature track MYFEATURE+
+ auf 'origin' verfolgen. +
+Erstelle ein Release
+ +-
+
- Unterstützt die Fertigstellung einer Produktionsversion. +
- Erlaubt geringfügige Bugfixes und die Erstellung der Metadaten für ein Release +
★ ★ ★
+Beginne ein Release
+ ++ Um ein neues Releases zu beginnen, benutze den git flow release Befehl. + Mit diesem wird ein Release-Branch vom aktuellen 'develop'-Branch erstellt. +
++ git flow release start RELEASE [BASE] ++
+ Du kannst optional einen [BASE]
Commit sha-1 Hash bereitstellen,
+ um ein Release von diesem Commit zu starten. Der Commit muss sich im 'develop'-Branch befinden.
+
★ ★ ★
+ ++ Es ist ratsam, den Release-Branch nach der Erstellung zu veröffentlichen und damit anderen Entwicklern + die Möglichkeit für Comitts zu geben. Mache es ähnlich wie bei einem Feature-Branch mit dem Befehl: +
++ git flow release publish RELEASE ++
+ (Du kannst ein entferntes Remote-Release mittels
+ git flow release track RELEASE
verfolgen.)
+
Fertigstellung eines Releases
+ ++ Das Beenden eines Releases ist einer der größten Schritte im Git-Branching-Prozess. + Es bewirkt folgende Aktionen: +
+-
+
- Zusammenführen des Release-Branches zurück in den 'master'-Branch. (Merge-Prozess) +
- Markiert (Tagged) das Release mit seinem Namen +
- Zurückführen des Releases in den 'develop'-Branch (Merge-Prozess) +
- Entfernt den Release-Branch +
+ git flow release finish RELEASE ++
Vergesse nicht Deine Tags mittels git push --tags
zu pushen.
Hotfixes
+ +-
+
- + Hotfixes werden notwendig, sobald ein unerwünschter Zustand innerhalb einer Live-Produktionsversion + eintritt und resultierend daraus, sofort gehandelt werden muss. + +
- + Ein Hotfix kann aus dem entsprechenden Tag des 'master'-Branches, welcher die Produktionsversion markiert, + direkt abgezweigt werden. + +
★ ★ ★
+git flow hotfix start
+ +Ähnlich wie auch die anderen git-flow Befehle, wird ein Hotfix mittels
++ git flow hotfix start VERSION [BASENAME] ++
+ begonnen. Das VERSION-Argument markiert hierbei den neuen Hotfix-Release-Namen. + Optional kannst Du auch einen BASENAME spezifizieren. +
+ +Fertigstellung eines Hotfixes
+ ++ Mit dem Beenden eines Hotfixes, wird dieser in den 'develop'- und 'master'-Branch + zusammengeführt (Merge). Nebenbei wird der 'master'-Branch mit einem Tag + welcher die Hotfix-Version beinhaltet markiert. +
++ git flow hotfix finish VERSION ++
Befehle
+
Backlog
+★ ★ ★
+-
+
- Nicht alle verfügbaren Befehle sind hier abgedeckt, nur die wichtigsten. +
- Du kannst weiterhin alle Git-Befehle normal nutzen, wie Du es gewohnt bist. Git-flow ist nur eine Werkzeugsammlung. +
- Das 'support' Feature ist noch Beta und die Nutzung nicht empfohlen. +
- Wenn Du Übersetzungen beisteuern möchtest, würde ich mich freuen diese zu integrieren. +
★ ★ ★
+