Programmieren > Werkzeuge > Versionskontrolle > Git

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

Ein Git Repository erhalten

Es gibt 2 Möglichkeiten, zu einem Git Repository zu kommen:

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.

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: