Git-Tutorial: Synchronisation (Teil 1: git remote)

In einer Reihe von Tutorials behandeln wir die Entwicklungsarbeit mit Git. Nachdem Git aufgesetzt ist und einige grundlegende Kommandos vorgestellt wurden, geht es nun darum, mit Git zusammenzuarbeiten: Entwickler wollen ihre Arbeit synchronisieren. Zunächst zur Konfiguration von Remote-Verbindungen.

Verbindungen mit anderen Repositories managen

SVN nutzt ein einziges zentrales Repository, das als Kommunikationsdrehkreuz der Entwickler dient, und die Kollaboration findet statt, indem Changesets zwischen den Arbeitskopien der Entwickler und dem zentralen Repo ausgetauscht werden. Das Kollaborationsmodell von Git unterscheidet sich davon grundlegend: Jeder Entwickler hat seine eigene Kopie des Repos, vollständig mit eigener lokaler History und Branch-Struktur. In der Regel teilen Nutzer Serien von Commits statt einzelner Changeseta. Statt ein Changeset von einer Arbeitskopie in ein zentrales Repo zu committen, ermöglicht Git es, ganze Branches zwischen Repos zu teilen.

Mit den Befehlen in diesem und den folgenden Tutorials können Entwickler die Verbindungen mit anderen Repositories managen, lokale Historien durch das Pushen von Branches in andere Repos veröffentlichen und einsehen, was andere beigetragen haben, indem Branches in das lokale Repo gepullt werden.

git remote

Mit dem Befehl git remote lassen sich Verbindungen mit anderen Repositories erstellen, ansehen und löschen. Remote-Verbindungen sind eher wie Bookmarks und keine direkten Links in andere Repos. Statt Echtzeitzugriff auf ein anderes Repo anzubieten, dienen sie als bequeme Namen, die genutzt werden können, um eine weniger bequeme URL zu referenzieren.

Das folgende beispielhafte Diagramm zeigt zwei Remote-Verbindungen von der Repo eines Entwicklers – eine ins zentrale Repo und eine ins Repo eines anderen Entwicklers. Statt sie durch ihre vollen URLs zu referenzieren, können die Shortcuts in anderen Git-Befehlen genutzt werden.

Git remote

Nutzung

git remote

Listet die Remote-Verbindungen zu anderen Repositories auf.

git remote -v

Listet die Remote-Verbindungen zu anderen Repositories inklusive der URLs der einzelnen Verbindungen auf.

git remote add <name> <url>

Erzeugt eine neue Verbindung zu einem Remote-Repository. Nach dem Hinzufügen kann <name> als bequemer Shortcut für <url> in anderen Git-Befehlen genutzt werden.

git remote rm <name>

Entfernt die Verbindung zum Remote-Repository namens <name>.

git remote rename <old-name> <new-name>

Benennt eine Remote-Verbindung von <old-name> in <new-name> um.

Anmerkungen

Git ist so designt, dass jeder Entwickler eine einzelne isolierte Entwicklungsumgebung hat. Das bedeutet, dass Informationen nicht automatisch zwischen Repositories hin und her kommuniziert werden. Stattdessen müssen Entwickler manuell Upstream-Commits in ihre lokalen Repos pullen und ihre lokalen Commits manuell ins zentrale Repo pushen. Der Befehl git remote ein einfacher Weg, um URLs in diesen Teilen-Befehlen zu verwenden.

origin-Remote
Wird ein Repository mit git clone geklont, erzeugt Git automatisch eine Remote-Verbindung namens origin, die zurück auf das geklonte Repo verweist. Das ist hilfreich für Entwickler, die eine lokale Kopie eines zentralen Repos anlegen, und bietet ihnen eine einfache Möglichkeit, Upstream-Änderungen zu pullen oder ihre lokalen Commits zu veröffentlichen. Dieses Verhalten ist auch der Grund, warum in den meisten Git-basierten Projekten die Bezeichnung origin für das zentrale Repository genutzt wird.

Repository-URLs
Git unterstützt viele Wege, um ein Remote-Repository zu referenzieren. Zwei der einfachsten Möglichkeiten, um auf ein Remote-Repo zuzugreifen, bieten die Protokolle HTTP und SSH. HTTP eignet sich dazu, anonymen Read-only-Zugriff auf ein Repo zu gewähren, beispielsweise:

http://host/path/to/repo.git

Allerdings ist es normalerweise nicht möglich, Commits an eine HTTP-Adresse zu pushen (zumal anonyme Pushes zumeist auch gar nicht erlaubt sein sollen). Für Lese- und Schreibzugriff sollte SSH verwendet werden:

ssh://user@host/path/to/repo.git

Es wird ein gültiger SSH-Account auf der Host-Maschine benötigt; darüber hinaus unterstützt Git authentifizierten Zugriff via SSH "out of the box".

Beispiel

Neben der origin-Verbindung ist es oftmals sinnvoll, Verbindungen zu den Repositories der anderen Teammitglieder zu haben. Wenn z.B. der Kollege Paul ein öffentlich zugängliches Repo unter dev.beispiel.com/paul.git pflegt, lässt sich eine Verbindung so hinzufügen:

git remote add paul http://dev.example.com/paul.git

Diese Art von Zugriff auf die individuellen Repositories anderer Entwickler ermöglicht die Zusammenarbeit außerhalb des zentralen Repos. Das kann insbesondere sehr nützlich sein, wenn kleine Teams an einem großen Projekt arbeiten.

Im nächsten Tutorial geht es dann um den Import von Commits mit git fetch.

Weiterführende Infos: Ihr Partner für Git und Stash

Kennen Sie Stash, Atlassians Git-Repository-Managementsystem? Stash bietet eine zentrale Lösung zum Management des gesamten distributierten Codes: Hier kommen alle Git-Repositories im Unternehmen zusammen, hier finden Entwickler immer die letzte offizielle Version eines Projekts, hier können Projektverantwortliche Berechtigungen kontrollieren, um sicherzustellen, dass die richtigen Nutzer Zugriff auf den richtigen Code haben.

Möchten Sie mehr erfahren? Wir sind offizieller Vertriebspartner von Atlassian und einer der größten Atlassian Experts Partner weltweit. Gerne unterstützen wir Sie bei der Evaluierung, Lizenzierung und Adaption von Stash. Und wenn Sie Atlassian-Lizenzen bei //SEIBERT/MEDIA kaufen, gewähren wir Ihnen einen Rabatt in Höhe von 10% der Lizenzkosten in Form von Beratungsleistungen. Bitte sprechen Sie uns einfach an.

99 Argumente für Stash als Git-Repository-Manager
Branch-basierte Git-Workflows mit Stash adaptieren
Echte Integration: Das Zusammenspiel von JIRA, Stash und Bamboo
Interview: Die Vorteile von Git in der Software-Entwicklung und die Möglichkeiten von Stash
So funktioniert die Lizenzierung von Atlassian-Produkten