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.
Zugehöriges Material
Git-Protokoll für Fortgeschrittene
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 <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 ./.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.