Git Flow

Git Flow ist ein Git-Branching-Modell, das Teams dabei helfen soll, Software besser zu verwalten und zu veröffentlichen.

Git Flow wurde 2010 von Vincent Driessen vorgeschlagen und macht durch eine Reihe standardisierter Branch-Benennungen und Workflows die Entwicklungs-, Test- und Release-Prozesse geordneter und effizienter.

Git Flow besteht hauptsächlich aus den folgenden Branch-Typen:master、develop、feature、release、hotfix。

Git Flow-Installation

Linux

Debian/Ubuntu:

sudo apt-get install git-flow

Fedora:

sudo dnf install gitflow
sudo apt-get install git-flow

macOS

Unter macOS können Sie Homebrew verwenden, um Git Flow zu installieren:
brew install git-flow

Installation aus dem Quellcode

Wenn Git Flow im Paketmanager Ihrer Distribution nicht verfügbar ist, können Sie es auch aus dem Quellcode installieren:

git clone https://github.com/nvie/gitflow.git
cd gitflow
sudo make install

Nach der Installation können Sie mit dem folgenden Befehl überprüfen, ob Git Flow erfolgreich installiert wurde:

git flow version

Windows

Unter Windows können Sie Git Flow auf folgende Weise installieren:

  • Verwenden Sie Git for Windows: Git for Windows enthält Git Flow. Sie könnenGit for WindowsGit installieren und dann Git Bash verwenden, um Git Flow zu nutzen.

  • Scoop verwenden: Wenn Sie den Scoop-Paketmanager verwenden, können Sie Git Flow mit dem folgenden Befehl installieren:

    scoop install git-flow
  • Chocolatey verwenden: Wenn Sie den Chocolatey-Paketmanager verwenden, können Sie Git Flow mit dem folgenden Befehl installieren:

    choco install gitflow

Git-Flow-Branching-Modell

masterBranch:

  • Behalten Sie stets einen stabilen und releasefähigen Zustand bei.
  • Jedes Mal, wenn eine neue Version veröffentlicht wird, stammt sie vondevelopBranch zusammenführen inmasterBranch.

developBranch:

  • Dient zur Integration aller Entwicklungs-Branches.
  • Stellt den neuesten Entwicklungsfortschritt dar.
  • Feature-Branches, Release-Branches und Hotfix-Branches zweigen alle von hier ab und werden schließlich wieder hierher zusammengeführt.

featureBranch:

  • Dient der Entwicklung neuer Features.
  • fromdevelopBranch-Erstellung, nach Abschluss der Entwicklung zurückmergendevelopBranch.
  • Namenskonventionen:feature/feature-name。

releaseBranch:

  • Dient der Vorbereitung neuer Versionsveröffentlichungen.
  • fromdevelopDer Branch wird erstellt, abschließende Tests und Fehlerbehebungen werden durchgeführt, und dann wird er zurückgemergt nachdevelopundmasterBranch, und mit einer Version taggen.
  • Namenskonventionen:release/release-name。

hotfixBranch:

  • Wird verwendet, um dringende Probleme zu beheben.
  • frommasterBranch-Erstellung, Zurückmergen nach Abschluss des FixesmasterunddevelopBranch, und mit einer Version taggen.
  • Namenskonventionen:hotfix/hotfix-name。

Prinzipien der Branch-Operationen

  • Jeder Commit auf dem Master-Branch sollte mit einem Tag versehen werden, und der Develop-Branch wird auf Basis von Master erstellt.
  • Nach Abschluss eines Feature-Branches wird er zurück in den Develop-Branch gemergt, und der Branch wird normalerweise gelöscht.
  • Ein Release-Branch wird auf Basis von Develop erstellt und für Tests und zum Beheben von Fehlern verwendet. Nach dem Release wird er zurück in Master und Develop gemergt, und ein Tag wird erstellt, um die Versionsnummer zu markieren.
  • Der Hotfix-Branch wird auf Basis von Master erstellt. Nach Abschluss wird er zurück in Master und Develop gemergt und mit einem Tag versehen.1。

Beispiele für Git-Flow-Befehle

  • Feature-Branch starten:git flow feature start MYFEATURE
  • Feature-Branch abschließen:git flow feature finish MYFEATURE
  • Release-Branch starten:git flow release start RELEASE [BASE]
  • Release-Branch abschließen: in Master und Develop mergen, Tag setzen, Release-Branch löschen.
  • Einen Hotfix-Branch starten:git flow hotfix start HOTFIX [BASE]
  • Hotfix-Branch abschließen: in Master und Develop mergen, Tag setzen, Hotfix-Branch löschen.

Git-Flow-Workflow

1. Git Flow initialisieren

Initialisieren Sie zunächst Git Flow im Projekt. Sie können ein Git-Flow-Plugin verwenden (zum Beispielgit-flow), um die Arbeitsabläufe zu vereinfachen.

git flow init

Bei der Initialisierung müssen Sie Branch-Namensregeln und den Standard-Branch festlegen.

2. Einen Feature-Branch erstellen

Wenn Sie mit der Entwicklung eines neuen Features beginnen, erstellen Sie aus demdevelopBranch einen Feature-Branch.

git flow feature start feature-name

Nach Abschluss der Entwicklung mergen Sie den Feature-Branch zurück in dendevelopBranch und löschen den Feature-Branch.

git flow feature finish feature-name

3. Einen Release-Branch erstellen

Wenn Sie sich darauf vorbereiten, eine neue Version zu veröffentlichen, erstellen Sie vomdevelopBranch aus einen Release-Branch.

git flow release start release-name

Führen Sie auf dem Release-Branch abschließende Tests und Korrekturen durch. Sobald er für die Veröffentlichung bereit ist, mergen Sie den Release-Branch zurück zudevelopundmasterBranch, und mit einer Version taggen.

git flow release finish release-name

4. Einen Fix-Branch erstellen

Wenn ein Problem gefunden wird, das einen dringenden Fix erfordert, erstellen Sie vommasterBranch aus einen Fix-Branch.

git flow hotfix start hotfix-name

Nachdem der Fix abgeschlossen ist, mergen Sie den Fix-Branch zurück in denmasterunddevelopBranch und taggen Sie ihn mit einer Version.

git flow hotfix finish hotfix-name

ExampleOperation

Das Folgende ist ein umfassendes Beispiel für die praktische Verwendung von Git Flow.

Git Flow initialisieren:

git flow init

Feature-Branches erstellen und abschließen:

git flow feature start new-feature # 开发新功能
git flow feature finish new-feature

Release-Branches erstellen und abschließen:

git flow release start v1.0.0 # 测试和修复
git flow release finish v1.0.0

Fix-Branches erstellen und abschließen:

git flow hotfix start hotfix-1.0.1. # 修复紧急问题
git flow hotfix finish hotfix-1.0.1

Vor- und Nachteile

Vorteile

  • Klares Branch-Modell: Klare Regeln für die Benennung und Nutzung von Branches machen den Entwicklungsprozess gut organisiert.
  • Entwicklung und Release isolieren: Die Trennung von Entwicklungs- und Release-Prozessen verringert die Auswirkungen von Unsicherheiten in der Entwicklung auf Releases.
  • Versionsverwaltung: Jedes Release und jeder Fix wird mit einem Versionslabel versehen, was die Nachverfolgung und Verwaltung erleichtert.

Nachteile

  • Komplexität: Für kleine Teams oder einfache Projekte kann das Branching-Modell von Git Flow übermäßig komplex erscheinen.
  • Häufiges Merging: In großen Teams kann häufiges Zusammenführen von Branches zu einer Zunahme von Merge-Konflikten führen.

Git Flow ist ein strukturiertes Branch-Management-Modell, das Teams dabei hilft, den Softwareentwicklungs- und Release-Prozess besser zu verwalten, indem klare Branches und Workflows definiert werden. Obwohl es einige Komplexität hinzufügt, bietet Git Flow starke Unterstützung und Verwaltungsfunktionen für große Projekte und Teamzusammenarbeit.

Weitere Erweiterungen