git init

Auf dieser Seite beschäftigen wir uns ausführlich mit dem Befehl git init. Am Ende dieser Seite wirst du über die wichtigsten und die erweiterten Funktionen von git init Bescheid wissen. Dazu zählt Folgendes:

  • Optionen und Nutzung vongit init
  • Überblick über das .git-Verzeichnis
  •  Individuelle Werte für die git init-Verzeichnisumgebung
  • git init im Vergleich mit git clone
  • git init-Bare-Repositorys
  • git init-Vorlagen

Mit dem Befehl git init wird ein neues Git-Repository erstellt. Er kann zur Konvertierung eines bestehenden, nicht versionierten Projekts in ein Git-Repository oder zum Initialisieren eines neuen, leeren Repositorys genutzt werden. Die meisten anderen Git-Befehle sind außerhalb eines initialisierten Repositorys nicht verfügbar. git init ist also normalerweise der erste Befehl, der in einem neuen Projekt ausgeführt wird.

git init erstellt ein .git-Unterverzeichnis im aktuellen Arbeitsverzeichnis, das alle erforderlichen Git-Metadaten für das neue Repository enthält. Diese Metadaten enthalten alle Unterverzeichnisse für Objekte, Referenzen und Vorlagendateien. Außerdem wird eine HEAD-Datei erstellt, die auf den aktuell ausgecheckten Commit verweist.

Abgesehen vom .git-Verzeichnis bleibt ein bestehendes Projekt im Root-Verzeichnis des Projekts unverändert (im Gegensatz zu SVN benötigt Git nicht in jedem Unterverzeichnis ein .git-Unterverzeichnis).

Für die Git-Konfiguration mit git init wird standardmäßig der Pfad des .git-Unterverzeichnisses gewählt. Du kannst den Pfad des Unterverzeichnisses ändern und anpassen, wenn du einen anderen Speicherort bevorzugst. Du kannst für die Umgebungsvariable $GIT_DIR einen eigenen Pfad festlegen. Dort werden dann die Konfigurationsdateien abgelegt, wenn du git init ausführst. Denselben Zweck erfüllt das Argument --separate-git-dir. Häufig verwendet man ein separates .git-Unterverzeichnis, damit Punktdateien zur Systemkonfiguration (.bashrc, .vimrc etc.) im Hauptverzeichnis verbleiben, während sich der .git-Ordner an einem anderen Speicherort befindet.
 

Anwendung

Im Vergleich zu SVN ist es mit dem Befehl git init unglaublich einfach, neue versionskontrollierte Projekte zu erstellen. In Git muss du nicht erst ein Repository erstellen, Dateien importieren und eine Arbeitskopie auschecken. Außerdem sind bei Git auch kein bereits vorhandener Server oder Administratorrechte erforderlich. Du musst lediglich mit "cd" in dein Projekt-Unterverzeichnis wechseln und git init ausführen, um ein voll funktionsfähiges Git-Repository zu erhalten.

git init

Wandle das aktuelle Verzeichnis in ein Git-Repository um. Dem aktuellen Verzeichnis wird dann ein .git-Unterverzeichnis hinzugefügt und du kannst mit dem Erfassen von Projektrevisionen beginnen.

git init <verzeichnis>

Erstelle im angegebenen Verzeichnis ein leeres Git-Repository. Durch diesen Befehl wird ein neues Unterverzeichnis mit dem Namen erstellt, in dem sich nichts außer dem .git-Unterverzeichnis befindet.

Wenn du git init bereits für ein Projektverzeichnis ausgeführt hast und es dort das Unterverzeichnis .git gibt, kannst du git init problemlos auf dasselbe Projektverzeichnis anwenden. Eine vorhandene .git-Konfiguration wird dabei nicht überschrieben.

git init vs. git clone

Eine kurze Anmerkung: git init und git clone werden leicht verwechselt. Im Prinzip können beide zur Initialisierung eines neuen Git-Repositorys genutzt werden. Doch git clone ist abhängig von git init. Mit git clone erstellst du eine Kopie eines bestehenden Repositorys. Intern ruft git clone zuerst git init auf, um ein neues Repository zu erstellen. Daraufhin werden die Daten vom bestehenden Repository kopiert und ein neuer Satz Arbeitsdateien ausgecheckt. Mehr hierzu erfährst du auf der Seite zu git clone.

Bare-Repositorys: git init --bare

git init --bare <verzeichnis>

Lege ein leeres Git-Repository ohne Arbeitsverzeichnis. Gemeinsame Repositorys sollten immer mit --bare erstellt werden (siehe Ausführungen unten). Üblicherweise enden Repositorys, die mit dem Zusatz --bare initialisiert wurden, mit .git. Wenn die leere Version eines Repositorys z. B. mein-projekt heißt, sollte sie in einem Verzeichnis namens mein-projekt.git gespeichert sein.

Mit dem Flag --bare erstellst du ein Repository ohne Arbeitsverzeichnis, in dem du Dateien bearbeiten und Änderungen committen kannst. Der Zweck eines Bare-Repositorys ist es, Code dorthin zu pushen und daraus zu pullen. Man sollte Commits jedoch nie mit diesem Repository als direktem Ziel durchführen. Zentrale Repositorys sollten immer als Bare-Repositorys erstellt werden, da Änderungen womöglich überschrieben werden, wenn Branches zu einem Repository gepusht werden, das kein Bare-Repository ist. Im Grunde genommen kennzeichnest du mit --bare ein Repository als eine Art Speicher, statt es als Entwicklungsumgebung im eigentlichen Sinne zu nutzen. Daher ist das zentrale Repository für nahezu alle Git-Workflows ein Bare-Repository. Die lokalen Repositorys der Entwickler hingegen sind keine Bare-Repositorys.

Git-Tutorial: Bare-Repositorys

Am häufigsten verwendet man git init --bare, um ein zentrales Remote-Repository zu erstellen:

ssh <Benutzer>@<Host> cd path/above/repo git init --bare my-project.git

Zuerst meldest du dich per SSH am Server an, der dein zentrales Repository enthalten soll. Dann navigierst du an den Ort, an dem du das Projekt speichern möchtest. Zum Schluss nutzt du die Option --bare, um ein zentrales Repository zum Speichern anzulegen. Die Entwickler klonen dann my-project.git von dort aus, um lokale Kopien auf ihre Entwicklungsrechner zu ziehen.

"git init"-Vorlagen

git init <directory> --template=<template_directory>

Mit diesem Befehl werden ein neues Git-Repository angelegt und die Dateien aus dem <template_directory> in das Repository kopiert.

Mithilfe von Vorlagen kannst du ein neues Repository mit einem vordefinierten .git-Unterverzeichnis erstellen. Eine Vorlage kannst du so konfigurieren, dass sie Standardverzeichnisse und -dateien enthält, die in das .git-Unterverzeichnis eines neuen Repositorys kopiert werden. Die Git-Standardvorlage befindet sich normalerweise im Verzeichnis '/usr/share/git-core/templates', kann auf deiner Maschine aber unter einem anderen Pfad liegen.

Standardvorlagen bieten eine gute Orientierung und zeigen dir, wie du Funktionen von Vorlagen einsetzen kannst. Eine sehr hilfreiche Funktion, die du in den Standardvorlagen findest, ist die Hook-Konfiguration in Git. Du kannst eine Vorlage mit vordefinierten Git-Hooks erstellen und häufig verwendete Hooks direkt beim Anlegen deiner neuen Git-Repositorys anwenden. Mehr zu Git-Hooks erfährst du auf der Seite über Git-Hooks.

Konfiguration

Alle Konfigurationen von git init <directory> erfordern ein <directory>-Argument. Wenn du das <directory> angibst, wird der Befehl in diesem Verzeichnis ausgeführt. Wenn es dieses Verzeichnis noch nicht gibt, wird es erstellt. Neben den Optionen und Konfigurationen, die wir bereits besprochen haben, bietet git init noch ein paar weitere Befehlszeilenoptionen. Hier ist eine vollständige Liste dieser Optionen:

-Q

--QUIET

Es werden nur kritische Nachrichten, Fehler und Warnungen ausgegeben. Sonstiger Output wird unterdrückt.

--BARE

Erstellt ein Bitbucket-Repository (siehe Abschnitt "Bare-Repositorys" oben)

--TEMPLATE=<TEMPLATEDIRECTORY>

Gibt das Verzeichnis an, aus dem die genutzten Vorlagen stammen. (Siehe oben den Abschnitt zu den Git init-Vorlagen).

--SEPARATE-GIT-DIR=<GIT DIR>

Erstellt eine Textdatei mit dem Pfad zu <git dir>. Diese Datei fungiert als Verknüpfung zum .git-Verzeichnis. Dies ist hilfreich, wenn du dein .git-Verzeichnis an einem von den Arbeitsdateien deines Projekts separaten Ort oder Laufwerk speichern möchtest. Gebräuchliche Anwendungsfälle für --separate-git-dir sind z. B.:

  • Deine Systemkonfigurationsdateien, die mit einem Punkt beginnen (.bashrc, .vimrc etc.), verbleiben im Hauptverzeichnis, während sich der .git-Ordner an einem anderen Speicherort befindet.
  • Dein Git-Verlauf hat mittlerweile sehr viel Festplattenspeicher belegt und du musst ihn auf ein anderes Laufwerk mit hoher Kapazität verschieben.
  • Eventuell willst du das Git-Projekt in ein öffentlich zugängliches Verzeichnis wie `www:root` ablegen.
     

Du kannst git init --separate-git-dir für ein bestehendes Repository aufrufen und das Verzeichnis .git dir wird zum angegebenen <git dir> Pfad verschoben.

--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)] 

Lege Zugriffsrechte für das neue Repository fest. Hierdurch wird bestimmt, welche Benutzer und Gruppen, die Zugriffsrechte auf Unix-Ebene haben, Pushes zum und Pulls vom Repository durchführen dürfen.

Examples

Ein neues Git-Repository für eine vorhandene Codebasis erstellen

cd /path/to/code \
git init \
git add . \
git commit

Erstellen eines neuen Bare-Repositorys

git init --bare /path/to/repo.git

Eine "git init"-Vorlage erstellen und ein neues Git-Repository mithilfe der Vorlage anlegen

mkdir -p /path/to/template \
echo "Hello World" >> /absolute/path/to/template/README \
git init /new/repo/path --template=/absolute/path/to/template \
cd /new/repo/path \
cat /new/repo/path/README

Du möchtest mit Git arbeiten?

Sieh dir dieses interaktive Tutorial an.

Jetzt loslegen