git ready

Lerne Git Commit für Commit
von Nick Quaranto, Übersetzung von Nico Gulden

Remote Branches auflisten

eingetragen am 13 Feb 2009

Manchmal möchtest du herausfinden, welche Branches in deinem entfernten Repository existieren, so dass du sie herunterladen, auschecken und mit deinen lokalen Branches zusammenführen kannst. Wenn du GitHub oder gitweb zum Hosten deines Repositories verwendest, ist es im Normalfall recht einfach, die Namen der Branches zu identifizieren. Aber wenn du sie allgemein oder für Scripte benötigst, ist es schon nicht mehr so klar.

UPDATE: Die Kommentare haben mich ein wenig erleuchtet… Es scheint immer mehrere Wege zu geben, das Pferd mit Git zu zäumen. Der einfacheste Weg ist es, einfach die verschiedenen Optionen des git branch Befehls zu verwenden. -a zeigt alle lokalen und entfernten Branches an, wohingegen -r nur die entfernten Branches anzeigt.

$ git branch
* master

$ git branch -a
* master
  origin/1-2-stable
  origin/2-0-stable
  origin/2-1-stable
  origin/2-2-stable
  origin/3-0-unstable
  origin/HEAD
  origin/master

$ git branch -r
  origin/1-2-stable
  origin/2-0-stable
  origin/2-1-stable
  origin/2-2-stable
  origin/3-0-unstable
  origin/HEAD
  origin/master

Sobald man den Namen des Branches kennt, ist es sehr einfach, ihn auszuchecken. Falls du die Farboptionen aktiviert hast, werden noch nicht heruntergeladene Branches in rot aufgelistet.

Es gibt noch einen anderen Weg herauszufinden, welche Branches sich im entfernten Repository befinden, indem die entsprechenden remote Befehle git remote und git ls-remote verwendet werden. Ersterer zeigt eine Reihe von Informationen über das entfernte Repository im Allgemeinen an und in welcher Beziehung sie zu deinem lokalen Repository stehen. Der letztere Befehl listet einfach nur alle Referenzen zu Branches und Tags auf, die er kennt.

$ git remote show origin
* remote origin
  URL: git://github.com/rails/rails.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branches
    1-2-stable 2-0-stable 2-1-stable 2-2-stable 3-0-unstable master

$ git ls-remote --heads origin
5b3f7563ae1b4a7160fda7fe34240d40c5777dcd  refs/heads/1-2-stable
71926912a127da29530520d435c83c48778ac2b2  refs/heads/2-0-stable
2b158543247a150e8ec568becf360e7376f8ab84  refs/heads/2-1-stable
b0792a3e7be88e3060af19bab01cd3d26d347e4c  refs/heads/2-2-stable
d6b9f8410c990b3d68d1970f1461a1d385d098d7  refs/heads/3-0-unstable
f04346d8b999476113d5e5a30661e07899e3ff80  refs/heads/master

Der ls-remote Befehl gibt den SHA1 Hash des neuesten Commits für die jeweilige Referenz zurück, so dass es sehr einfach zu parsen ist und der exakte Commit für Scripte verwendet werden kann. Die Option --heads listet nur die Namen der Branches auf, weil der Befehl auch Tags auflisten kann.

Falls du andere Verwendungsmöglichkeiten für diese Befehle oder einfache Wege zum Herausfinden der Branches in entfernten Repositories kennst, kommentiere das einfach!