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!