- Test-Umgebung
- Konfiguration
- Grundlagen
- Branching
- Remotes
Git-Grundlagen
Konzepte
Warum ein Git Repository?
Git verwaltet die Änderungen in Dateien eines Verzeichnisses inklusive aller Unterverzeichnisse. Aufgrund der aufgezeichneten Verwaltungsdaten kann Git nachverfolgen, wer wann welche Veränderungen an den Dateien dieses Verzeichnisses vorgenomment hat und warum (indem es Kommentare zu den Veränderungen speichert). Zusätzlich kann Git jeden gespeicherten Zustand (Commit genannt) des Verzeichnisses wieder herstellen. Um dies bewerkstelligen zu können verwaltet Git ein Repository (auch Objekt-Verzeichnis genannt) in dem die Dateien und ihre Veränderungen aufgezeichnet werden. Zusätzlich existiert ein Index, der Daten für den nächsten Commit bereitstellt.
Dateizustände
Aus der Sicht von Git hat eine Datei einen dieser Zustände
-
Tracked: Dateien, die bereits im Repository vorhanden sind oder sich im Index befinden
(und dadurch beim nächsten Commit ins Repository kommen)
- Committed: Die ausgecheckte Datei ist identisch mit der im Repository
- Modified: Die ausgecheckte Datei wurde geändert gegenüber dem Stand im Repository
- Staged: Die Änderungen in der Datei sind für den nächsten Commit vorgemerkt.
- Untracked: Dateien, für die keines von beiden zutrifft.
- Ignored: Dateien oder Unterverzeichnisse, die nicht im Repository verwaltet werden sollen.
- Dateien, die neu und noch nicht getracked sind.
Ein Git Repository erhalten
Es gibt 2 Möglichkeiten, zu einem Git Repository zu kommen:
- Ein neues Git Repository erstellen
- Ein bereits vorhandenes Git Repository klonen
Ein neues Git Repository erstellen
Ein neues Verzeichnis mit Inhalt anlegen und das Verzeichnis für die Verwaltung von Git vorbereiten.
> mkdir public_html > cd public_html/ > echo 'Meine Webseite ist da!' > index.html > git init Initialisierte leeres Git-Repository in public_html/.git/
Ein bereits vorhandenes Git Repository klonen
> git clone <URL zum entfernten Repository> <Pfadname>
Der Pfadname kann weggelassen werden, dann wird der Pfadname aus der URL des Repositories genommen.
Arbeiten mit dem Repository
Die Beispiele beziehen sich auf das selbst erstellte Repository oben.Datei für zukünftige Pflege im Repository vorsehen.
> git add index.html
Aktuellen Status des Repository ausgeben lassen
> git status Auf Branch master Initialer Commit zum Commit vorgemerkte Änderungen: (benutzen Sie "git rm --cached <Datei>..." zum Entfernen aus der Staging-Area) neue Datei: index.html
Ausführliche Ausgabe der Änderungen
> git diff
Vorgemerkte Änderungen ins Repository einpflegen
> git commit -m "Anfänglicher Inhalt von public_html" [master (Basis-Commit) ed52931] Anfänglicher Inhalt von public_html Author: Max Mustermann <max@mustermann.de> 1 file changed, 1 insertion(+) create mode 100644 index.html > git status Auf Branch master nichts zu committen, Arbeitsverzeichnis unverändert
Ein weiterer Commit
#index.html ändern > cat index.html <html> <head> <title>Meine Webseite</title> </head> <body> Meine Webseite ist da! </body> </html> > git commit index.html # Kommentar zum Commit im Editor eintragen [master 5de0e42] In HTML konvertieren. 1 file changed, 8 insertions(+), 1 deletion(-)
Datei umbenennen/verschieben
> git mv <alteDatei> <neueDatei>
Datei nicht mehr im Repository verwalten
> git rm <Datei>
Commits anschauen
> git log commit 5de0e427af5934257756cb12fe74cc31649faecd Author: Erich Weigand <erichweigand@erichweigand.de> Date: Fri Sep 9 18:23:14 2016 +0200 In HTML konvertieren. commit ed529312aba3248fa9508c2ecd406dd763238dca Author: Max Mustermann <max@mustermann.de> Date: Thu Sep 8 21:53:56 2016 +0200 Anfänglicher Inhalt von public_html
git log
hat sehr viele Optionen, um die Anzahl der Daten und deren Ausgabe zu beeinflussen. Eine
vollständige Liste erhält man über den Befehl git help log
. Ein paar ausgewählte Optionen sind.
- -p Zeigt den Patch an, der mit den jeweiligen Commits eingefügt wurde.
- --stat Anzeige der Statistiken für Dateien, die in den einzelnen Commits geändert wurden.
- --shortstat Anzeige nur der geänderten/eingefügten/gelöschten Zeile des Befehls --stat.
- --name-only Listet die Dateien auf, die nach den Commit-Informationen geändert wurden.
- --name-status Listet die Dateien auf, die von hinzugefügten, geänderten oder gelöschten Informationen betroffen sind.
- --abbrev-commit Zeigt nur die ersten paar Zeichen der SHA-1-Prüfsumme an, nicht aber alle 40.
- --relative-date Zeigt das Datum in einem relativen Format an (z.B. „vor 2 Wochen“), anstatt das volle Datumsformat zu verwenden.
- --graph Zeigt ein ASCII-Diagramm des Branches an und verbindet die Historie mit der Log-Ausgabe.
- --pretty Zeigt Commits in einem anderen Format an. Zu den Optionswerten gehören oneline, short, full, fuller und format (womit Sie Ihr eigenes Format angeben können).
Dateien ignorieren
Sollen Dateien nicht in ein Repository eingefügt werden (z.B. Logdateien, automatisch erstellte Dateien) müssen diese in einer Datei .gitignore genannt werden. Die Syntax dieser Dateien ist:
- Leerzeilen werden ignoriert
- Zeilen die mit # beginnen werden ignoriert
- einfache Shell-Regular-Expressions sind erlaubt und gelten rekursiv für den ganzen Verzeichnisbaum
- wird ein / vorangestellt, gilt die Expression nicht rekursiv
- wird ein / nachgestellt ist ein Verzeichnis gemeint
- ein ! am Anfang negiert einen Ausdruck
- .gitignore Dateien in Unterverzeichnissen gelten nur für Dateien innerhalb dieser Unterverzeichnisse