Close

git remote – Tutorial

SVN nutzt ein einziges zentralisiertes Repository als Kommunikationsschnittstelle für Entwickler. Die Zusammenarbeit erfolgt dabei über Changesets, die zwischen den Arbeitskopien der Entwickler und dem zentralen Repository ausgetauscht werden. Genau darin liegt der Unterschied zum verteilten Zusammenarbeitsmodell von Git. Bei Git erhält jeder Entwickler eine eigene Kopie des Repositorys, die einen eigenen lokalen Verlauf und eine eigene lokale Branch-Struktur aufweist. In der Regel müssen Benutzer eine Reihe aufeinanderfolgender Commits veröffentlichen, kein einzelnes Changeset. Mit Git committest du keine Changesets von einer Arbeitskopie zum zentralen Repository, sondern kannst ganze Branches zwischen Repositorys teilen.

Der Befehl git remote ist Teil eines umfassenderen Systems, das für die Synchronisierung von Änderungen zuständig ist. Einträge, die über git remote registriert werden, werden zusammen mit den Befehlen git fetch, git push und git pull verwendet. Diese Befehle haben alle ihre eigenen Synchronisierungsaufgaben, die in den entsprechenden Links weiter ausgeführt werden.


git remote – Tutorial


Mit dem Befehl git remote kannst du Repositorys verbinden und diese Verbindungen abrufen und wieder löschen. Dabei solltest du dir Remote-Verbindungen wie Lesezeichen vorstellen, weniger als direkte Links zu anderen Repositorys. Sie erlauben keinen Echtzeitzugriff auf die Repositorys. Vielmehr sind sie praktische Kurznamen, die du statt langer und komplizierter URLs zum Referenzieren verwenden kannst.

Das folgende Diagramm zeigt zum Beispiel zwei Remote-Verbindungen von deinem Repository zum zentralen Repository und zum Repository eines anderen Entwicklers. Statt Repository-Referenzen über deren vollständige URLs herzustellen, kannst du das Original einfach weitergeben und dein Kollege John erstellt Verknüpfungen zu anderen Git-Befehlen.

Verbinden von anderen Repositorys mit git remote
Konsolenfenster
Zugehöriges Material

Git-Protokoll für Fortgeschrittene

Bitbucket-Logo
Lösung anzeigen

Git kennenlernen mit Bitbucket Cloud

Git-Remote-Tutorial: Übersicht


Der Befehl git remote ist im Wesentlichen eine Schnittstelle für das Management einer Liste von Remote-Einträgen, die in der Datei ./.git/config des Repositorys gespeichert sind. Die folgenden Befehle werden zur Anzeige des aktuellen Status der Remote-Liste verwendet.

Anzeigen von git remote-Konfigurationen


git remote

Führt deine Remote-Verbindungen zu anderen Repositorys auf

git remote -v

Wie der Befehl oben, aber einschließlich URL jeder Verbindung

Erstellen und Ändern von git remote-Konfigurationen


Der Befehl git remote ist außerdem eine praktische Methode bzw. ein Hilfsmittel zum Ändern der Datei ./.git/config eines Repositorys. Mit den unten aufgeführten Befehlen kannst du Verbindungen mit anderen Repositorys verwalten. Die folgenden Befehle nehmen Änderungen an der Datei /.git/config des Repositorys vor. Dasselbe Ergebnis kann auch erzielt werden, indem du die Datei ./.git/config direkt in einem Text-Editor bearbeitest.

git remote add <name> <url>

Nutze "git remote add ", um ein Remote-Repository neu zu verbinden. Sobald du das Remote-Repository hinzugefügt hast, kannst du in anderen Git-Befehlen den Wert aus dem Argument <name> als Kurzform des Werts aus dem Argument <url> verwenden.

git remote rm <name>

Mit diesem Befehl entfernst du die Verbindung mit dem im Argument < name > angegebenen Remote-Repository.

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

Mit diesem Befehl benennst du eine Remote-Verbindung von dem als <old-name> angegebenen Wert in den als <new-name> angegebenen Wert um.

Mit "git remote" Informationen zwischen Repositorys austauschen


Git wurde so konzipiert, dass jeder Entwickler in einer völlig isolierten Entwicklungsumgebung arbeiten kann. Das bedeutet, dass Informationen nicht automatisch zwischen den Repositorys ausgetauscht werden. Stattdessen müssen Entwickler Upstream-Commits manuell in ihr lokales Repository pullen oder ihre lokalen Commits manuell zurück in das zentrale Repository pushen. Der Befehl git remote ist einfach ein einfacherer Weg, um URLs an diese "Freigabebefehle" weiterzugeben.

Die Remote-Verknüpfung origin


Wenn du ein Repository mit git clone klonst, wird automatisch eine Remote-Verbindung namens "origin" erstellt, die auf das geklonte Repository zurückverweist. Das ist hilfreich für Entwickler, die eine lokale Kopie eines zentralen Repositorys erstellen, da sie auf diese Weise ganz einfach Upstream-Änderungen pullen oder lokale Commits veröffentlichen können. Dieses Verhalten ist auch der Grund, warum das zentrale Repository in den meisten Git-Projekten "origin" heißt.

Repository-URLs


Git bietet verschiedene Möglichkeiten, Verweise zu einem Remote-Repository herzustellen. Über HTTP- und SSH-Protokollen kann man am einfachsten auf ein Remote-Repository zugreifen. HTTP bietet eine einfache Möglichkeit für einen anonymen schreibgeschützten Zugriff auf ein Remote-Repository. Ein Beispiel:

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

Allgemein ist es jedoch nicht möglich, Commits an eine HTTP-Adresse zu pushen (wobei du anonyme Pushes sowie nicht erlauben wolltest). Für Lese- und Schreibzugriff solltest du stattdessen SSH verwenden:

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

Du benötigst ein gültiges SSH-Konto auf der Hostmaschine. Im Übrigen unterstützt Git einen authentifizierten Zugriff über SSH ohne vorherige Einrichtung. Moderne, sichere Hosting-Lösungen von Drittanbietern wie Bitbucket.com stellen diese URLs für dich bereit.

git remote-Befehle


Der Befehl git remote ist einer der vielen Git-Befehle, die durch zusätzlich angehängte Unterbefehle ergänzt werden können. Im Folgenden sehen wir uns häufig genutzte git remote-Unterbefehle an.

ADD <NAME> <URL>

Fügt einen Eintrag zu ./.git/config für das Remote-Repository namens <name> unter der Repository-URL hinzu.

Akzeptiert die Option -f, die sofort nach dem Erstellen des Remote-Eintrags git fetch ausführt.

Akzeptiert die Option --tags, die umgehend git fetch ausführt und jedes Tag aus dem Remote-Repository importiert.

RENAME <OLD> <NEW>

Aktualisiert in ./.git/config die Umbenennung des Eintrags <OLD> in <NEW>. Alle remote verfolgten Branches und Konfigurationseinstellungen für das Remote-Repository werden aktualisiert.

REMOVE or RM <NAME>

Ändert ./.git/config und entfernt das Remote-Repository namens <NAME>. Alle remote verfolgten Branches und Konfigurationseinstellungen für das Remote-Repository werden entfernt.

GET-URL <NAME>

Gibt die URLs eines Remote-Eintrags aus.

Akzeptiert --push; Push-URLs werden statt Fetch-URLs abgefragt.

Mit --all werden alle URLs für das Remote-Repository aufgeführt.

SHOW <NAME>

Gibt allgemeine Informationen über das Remote-Repository <NAME> aus.

PRUNE <NAME>

Löscht alle lokalen Branches von <NAME>, die nicht im Remote-Repository vorhanden sind.

Akzeptiert die Option --dry-run, die auflistet, welche Branches gelöscht werden sollen, ohne den tatsächlichen Löschvorgang auszuführen.

Beispiele zu git remote


Neben einer Verbindung mit "origin" sind auch Verbindungen mit den Remote-Repositorys deiner Teamkollegen sehr praktisch. Wenn dein Kollege John beispielsweise ein öffentlich zugängliches Repository unter dev.example.com/john.git pflegt, könntest du wie folgt eine entsprechende Verbindung einrichten:

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

Mit einem solchen Zugriff auf die Remote-Repositorys einzelner Entwickler könnt ihr außerhalb der zentralen Repositorys zusammenarbeiten. Das kann für kleine Teams bei einem Großprojekt sehr nützlich sein.

Anzeige deiner Remote-Repositorys


Standardmäßig listet der Befehl git remote zuvor gespeicherte Remote-Verbindungen zu anderen Repositorys auf. Dadurch wird eine einzeilige Ausgabe erzeugt, in der die Namen der "Lesezeichennamen" der Remote-Repositorys aufgeführt werden.

$ git remote
origin
upstream
other_users_repo

Durch das Aufrufen von git remote mit der Option -v wird eine Liste mit Repository-Namen, für die ein Lesezeichen gesetzt wurde, und ihre entsprechenden Repository-URLs gedruckt. Die Option -v steht für "verbose" (ausführlich). Im Folgenden siehst du ein Beispiel für eine ausführliche git remote-Ausgabe.

git remote -v
origin  git@bitbucket.com:origin_user/reponame.git (fetch)
origin  git@bitbucket.com:origin_user/reponame.git (push)
upstream    https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream    https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (push)

Hinzufügen von Remote-Repositorys


Der Befehl git remote add erstellt einen neuen Eintrag einer Verbindung zu einem Remote-Repository. Nach dem Hinzufügen eines Remote-Repositorys kannst du in anderen Git-Befehlen als ein praktisches Kürzel für verwenden. Weitere Informationen zur akzeptierten URL-Syntax findest du unten im Abschnitt "Repository-URLs". Dieser Befehl erstellt einen neuen Eintrag in der Datei ./.git/config des Repositorys. Die Aktualisierung dieser Konfigurationsdatei folgt etwa diesem Muster:

$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"] 
   url = https://bitbucket.com/upstream_user/reponame.git 
   fetch = +refs/heads/*:refs/remotes/remote_test/*

Überprüfen eines Remote-Repositorys


Der Unterbefehl "show" kann an git remote angehängt werden, um eine detaillierte Ausgabe zur Konfiguration eines Remote-Repositorys zu erhalten. Diese Ausgabe enthält eine Liste mit Branches, die dem Remote-Repository zugeordnet sind, sowie die für Fetch- und Push-Vorgänge angefügten Endpunkte.

git remote show upstream
* remote upstream
   Fetch URL: https://bitbucket.com/upstream_user/reponame.git
   Push URL: https://bitbucket.com/upstream_user/reponame.git
   HEAD branch: main
   Remote branches:
      main tracked
      simd-deprecated tracked
      tutorial tracked
   Local ref configured for 'git push':
      main pushes to main (fast-forwardable)

Fetch- und Pull-Vorgänge von Git-Remotes


Sobald ein Remote-Eintrag mithilfe des Befehls git remote konfiguriert wurde, kann der Remote-Name an andere Git-Befehle als Argument übergeben werden, um mit dem Remote-Repository zu kommunizieren. Sowohl git fetch als auch git pull kann für das Lesen eines Remote-Repositorys verwendet werden. Beide Befehle lösen unterschiedliche Vorgänge aus, die in ihren jeweiligen Links im Detail erläutert werden.

Pushen zu Git-Remotes


Der Befehl git push wird zum Schreiben auf ein Remote-Repository verwendet.

git push <remote-name> <branch-name>

In diesem Beispiel wird der lokale Zustand von <branch-name> auf das mit <remote-name> angegebene Remote-Repository hochgeladen.

Umbenennen und Entfernen von Remotes


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

Der Befehl git remote rename erklärt sich von selbst. Wenn dieser Befehl ausgeführt wird, wird eine Remote-Verbindung von <old-name> in <new-name> umbenannt. Außerdem wird der Eintrag für das Remote-Repository auch im Verzeichnis ./.git/config umbenannt.

git remote rm <name>

Der Befehl git remote rm entfernt die Verbindung zu dem mit dem <name>-Parameter angegebenen Remote-Repository. Machen wir zu Demonstrationszwecken einmal das im letzten Beispiel hinzugefügte Remote-Repository rückgängig. Wenn wir git remote rm remote_test ausführen und dann die Inhalte von ./.git/config ansehen, stellen wir fest, dass der Eintrag [remote "remote_test"] entfernt wurde.


Diesen Artikel teilen
Nächstes Thema

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Mitarbeiter arbeiten mit unzähligen Tools zusammen

Bitbucket-Blog

Abbildung: DevOps

DevOps-Lernpfad

Demo Den: Feature-Demos mit Atlassian-Experten

So funktioniert Bitbucket Cloud mit Atlassian Open DevOps

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up