Kapitel 7
Remotes ohne Server
Was ein Remote wirklich ist
Du kannst Git mit einem anderen Repository verwenden, ohne das Internet zu nutzen. In diesem Kapitel bleiben alle Repositories in derselben Übungsumgebung. Die Abläufe sind echt. Nur die Entfernung zwischen den Repositories ist gering.

Mit dem vorhandenen Repository beginnen
Das vorbereitete Verzeichnis garden ist ein gewöhnliches Arbeitsrepository. Es hat einen committeten Verlauf und einen Arbeitsbaum, den du bearbeiten kannst. Beginne mit Befehlen, die du bereits kennst:
pwd
git status
git log
Du solltest in /workspace/garden sein. Der Arbeitsbaum ist sauber, und main endet mit dem Commit, der plants.txt hinzugefügt hat.
Ein Remote bezeichnet ein anderes Repository
Ein Remote ist ein gespeicherter Name samt Speicherort für ein anderes Git-Repository. Git kann mit diesem Repository Commits, Branch-Positionen und andere Referenzen austauschen. Das andere Repository könnte bei einem Hosting-Dienst liegen, auf einem Server im Netzwerk, auf einem Wechseldatenträger oder im nächsten Verzeichnis. „Remote“ beschreibt die Beziehung zwischen Repositories und verspricht nicht, dass das Internet beteiligt ist.
In diesem Kapitel entsteht folgende lokale Anordnung:
/workspace/
├── garden/ ordinary working repository where you make a later commit
├── origin.git/ bare repository that stores shared history
└── garden-copy/ ordinary clone used to observe and fetch that history
garden und garden-copy werden Arbeitsbäume haben. origin.git wird ein Bare-Repository sein: ein Git-Repository, das Verlauf und Referenzen speichert, ohne einen bearbeitbaren Satz von Projektdateien auszuchecken. Dadurch eignet es sich als Austauschpunkt. Niemand bearbeitet Dateien in seinem Arbeitsbaum, weil es keinen Arbeitsbaum hat.
Der Befehl git init --bare erstellt diese Art von Repository. Der Befehl git clone erstellt aus einem vorhandenen Repository ein neues Arbeitsrepository. Du verwendest beide in den nächsten Lektionen, nachdem ihre Bestandteile erklärt wurden.
Drei Namen, die du auseinanderhalten musst
Halte beim Aufbau der Anordnung diese drei Namen auseinander:
mainist ein lokaler Branch in dem Repository, in dem du dich gerade befindest.originwird der übliche gespeicherte Name für ein anderes Repository sein.origin/mainwird eine Remote-Tracking-Referenz sein: eine lokale Aufzeichnung der Position vonmaininoriginbeim letzten Austausch.
In den nächsten Lektionen legst du diese Namen an und siehst, wie sie sich bewegen. Für den Moment reicht die Abgrenzung: Auf main arbeitest du, origin benennt ein anderes Repository, und origin/main zeigt gemerkte Informationen, statt dein bearbeitbarer Branch zu werden.
Was macht origin.git in diesem Kapitel zu einem Remote von garden?
Das nützliche Denkmodell lautet: Repository zu Repository. Ein Host kann dafür Speicher und Zusammenarbeit bereitstellen. Er verändert aber nicht, was ein Git-Remote ist.