Git
Chapters ▾ 2nd Edition

3.3 Git Branching - Branch-Management

Branch-Management

Nachdem Sie nun einige Branches erzeugt, zusammengeführt und gelöscht haben, lassen Sie uns jetzt einige Werkzeuge für das Branch-Management betrachten, die sich als sehr nützlich erweisen werden, wenn Sie erst einmal ständig Branches benutzen.

Der Befehl git branch kann noch mehr, als Branches zu erzeugen und zu löschen. Wenn Sie die Anweisung ohne Argumente ausführen, bekommen Sie eine einfache Auflistung Ihrer aktuellen Branches:

$ git branch
  iss53
* master
  testing

Beachten Sie das Sternchen (*), das dem Branch master vorangestellt ist: es zeigt an, welchen Branch Sie gegenwärtig ausgecheckt haben (bzw. den Branch, auf den HEAD zeigt). Wenn Sie zu diesem Zeitpunkt einen Commit durchführen, wird der Branch master durch Ihre neue Änderung vorwärts bewegt. Um sich den letzten Commit auf jedem Branch anzeigen zu lassen, können Sie die Anweisung git branch -v ausführen:

$ git branch -v
  iss53   93b412c Fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 Add scott to the author list in the readme

Die nützlichen Optionen --merged und --no-merged können diese Liste nach Branches filtern, welche bereits mit dem Branch, auf dem Sie sich gegenwärtig befinden, zusammengeführt wurden und welche nicht. Um zu sehen, welche Branches schon mit dem Branch zusammengeführt wurden, auf dem Sie gerade sind, können Sie die Anweisung git branch --merged ausführen:

$ git branch --merged
  iss53
* master

Da Sie den Branch iss53 schon früher gemergt haben, sehen Sie ihn in Ihrer Liste. Branches auf dieser Liste ohne vorangestelltes * können für gewöhnlich einfach mit der Anweisung git branch -d gelöscht werden; Sie haben deren Änderungen bereits zu einem anderen Branch hinzugefügt, sodass Sie nichts verlieren würden.

Um alle Branches zu sehen, welche Änderungen enthalten, die Sie noch nicht integriert haben, können Sie die Anweisung git branch --no-merged ausführen:

$ git branch --no-merged
  testing

Das zeigt Ihnen einen anderen Branch. Da er Änderungen enthält, die noch nicht integriert wurden, würde der Versuch, ihn mit git branch -d zu löschen, fehlschlagen:

$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.

Wenn Sie den Branch wirklich löschen und diese Bearbeitungen aufgeben wollen, können Sie dies mit der Option -D erzwingen, wie die hilfreiche Meldung darauf hinweist.

Tip

Wenn Sie keinen Commit- oder Branch-Namen als Argument angeben, zeigen Ihnen die oben beschriebenen Optionen --merged und --no-merged was jeweils in Ihren current-Branch gemergt oder nicht gemergt wurde.

Sie können immer ein zusätzliches Argument angeben, um nach dem Merge-Status in Bezug auf einen anderen Zweig zu fragen, ohne zu diesen anderen Zweig zuerst wechseln zu müssen. So wie im Beispiel unten: „Was ist nicht in den Branch master integriert?“

$ git checkout testing
$ git branch --no-merged master
  topicA
  featureB