0%

Dein erstes Repository · Übung

Deine Identität vor dem ersten Commit einrichten

Du hast eine gespeicherte README.md in /workspace und willst sie unter Versionsverwaltung stellen. Ein paar Begriffe tragen diese Lektion. Es geht schneller, sie jetzt kennenzulernen als mitten in einem Befehl.

Ein Repository ist ein Projektordner, dessen Verlauf Git in versteckten Aufzeichnungen neben deinen Dateien verwaltet. Die Dateien, die du bearbeitest, bilden den Arbeitsbaum, auf Englisch working tree. Git zeichnet Änderungen dort nicht automatisch auf: Du wählst aus, was in den nächsten gespeicherten Stand kommt. Diese Auswahl liegt in der Staging-Area. Ein Commit ist eine Momentaufnahme dessen, was du dort bereitgestellt hast, mit einer Nachricht, die den Grund nennt. Zusammen bilden die Commits den Verlauf des Projekts.

Git fügt außerdem jedem Commit eine Autorenidentität aus Name und E-Mail-Adresse hinzu, damit der Verlauf zeigen kann, wer was getan hat. Das ist eine Einstellung für deine eigene Arbeit, kein Konto auf einer Hosting-Website. Hier beginnt diese Lektion.

Eine bearbeitete README.md bleibt im Arbeitsbaum; git add kopiert ihren aktuellen Inhalt in die Staging-Area, und git commit zeichnet diese bereitgestellte Momentaufnahme im Verlauf auf.

Warum die Identität zuerst kommt

Git kann den Autor eines Commits nicht erfinden. Wenn weder Name noch E-Mail-Adresse eingerichtet sind, verweigert Git den Commit und erklärt, dass die Autorenidentität unbekannt ist. Du beantwortest diese Frage vor dem ersten Commit des Repositorys, damit der erste Verlaufseintrag den beabsichtigten Autor trägt.

Die Identität einrichten

git config liest und schreibt Gits Einstellungen. Jede Einstellung hat einen Namen. Du brauchst user.name und user.email. Gib einer Einstellung einen Wert, und dieser Wert wird gespeichert. --global entscheidet, wo: in deiner Git-Konfiguration auf Benutzerebene statt innerhalb eines einzelnen Repositorys. Trotz des Wortes wird dabei nichts irgendwohin gesendet.

Ersetze beide Beispielwerte durch den Namen und die Adresse, die an deiner Arbeit stehen sollen. Eine Shell behandelt ein Leerzeichen normalerweise als Grenze zwischen zwei Argumenten. Die Anführungszeichen halten einen Namen wie Your Name als einen einzigen Wert für Git zusammen. Behalte die Anführungszeichen bei und ersetze den Text darin. Die Adresse mit .invalid ist ein Platzhalter für den Unterricht, keine Identität, die du in ein echtes Projekt übernehmen solltest.

git config --global user.name "Your Name"
git config --global user.email "you@example.invalid"

Die Einstellung gilt für Repositories, die du als dieser Benutzer verwendest. Sie wird nicht im Repository gespeichert, das du gleich anlegst. Verwende bei einem gemeinsamen oder beruflichen Benutzerkonto die Identität, die das Projekt erwartet, statt diese Unterrichtswerte zu kopieren.

Wenn du eine Einstellung ohne Wert angibst, gibt Git ihren aktuellen Wert aus:

git config --global user.name
git config --global user.email

Das Repository anlegen

Bleibe in /workspace; lege kein weiteres Projektverzeichnis an. pwd gibt den Ordner aus, in dem sich das Terminal befindet. Führe es zuerst aus, um deinen Standort zu bestätigen. git init macht diesen Ordner anschließend zu einem Repository und legt die oben beschriebenen versteckten Aufzeichnungen an. Deine Dateien bleiben unverändert. git status beschreibt den aktuellen Stand. Auf diesen Befehl wirst du am häufigsten zurückgreifen.

pwd
git init
git status

pwd sollte /workspace ausgeben. Git bezeichnet README.md als untracked: Die Datei liegt im Arbeitsbaum, aber noch nichts davon ist in der Staging-Area bereitgestellt.

Die Datei bereitstellen und erneut nachsehen

git add README.md legt den aktuellen Inhalt dieser Datei in der Staging-Area ab und beantwortet damit die Frage, die git status gerade aufgeworfen hat. Noch ist nichts in den Verlauf des Repositorys eingegangen, und nichts wird irgendwohin gesendet.

git add README.md
git status

Derselbe Befehl beschreibt README.md jetzt als bereitgestellt. Die Datei wurde weder verschoben noch verändert. Sie liegt noch immer in deinem Arbeitsbaum und kann weiter bearbeitet werden. Neu ist die Kopie, die Git für den nächsten Commit beiseitegelegt hat. Durch zweimaliges Nachfragen kannst du das selbst sehen, statt es einfach glauben zu müssen.

Committen und den Verlauf lesen

git commit erstellt den Commit aus allem, was bereitgestellt ist. Ohne weitere Angaben öffnet es einen Texteditor für die Nachricht. -m gibt die Nachricht stattdessen direkt an: Der Text in Anführungszeichen ist die Nachricht, und kein Editor öffnet sich. git log liest danach den Verlauf aus, den neuesten Eintrag zuerst.

git commit -m "Start the garden notes"
git log

Ein Eintrag mit dem Autor, dem Datum, deiner Nachricht und der Kennung, die Git dieser Momentaufnahme gegeben hat. Die Zeile Author: enthält die Identität, die du am Anfang eingerichtet hast.

Dieser Commit ist lokal. Weder ein Konto noch eine Netzwerkverbindung war beteiligt. Spätere Kapitel tauschen Verlauf mit anderen Repositories aus. Dieser erste Commit braucht aber nur das Projekt vor dir.

Du hast git status, dann git add README.md und danach erneut git status ausgeführt. Die beiden Antworten waren unterschiedlich. Was hat sich dazwischen geändert?

Ein Commit ist ein Verlauf mit einem Eintrag. In der nächsten Lektion änderst du README.md ein zweites Mal und beobachtest, wie Git dieselbe Datei anders beschreibt, weil es jetzt einen Vergleichsstand hat.