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 von
git init
- Überblick über das
.git
-Verzeichnis - Individuelle Werte für die
git init
-Verzeichnisumgebung git init
im Vergleich mitgit clone
git init
-Bare-Repositorysgit 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).
Standardmäßig wird mit git init
die Git-Konfiguration auf den Pfad des .git
-Unterverzeichnisses initialisiert. 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 und mit git init
werden die Git-Konfigurationsdateien hier initialisiert. Zum selben Zweck kannst du das Argument --separate-git-dir
übergeben. Häufig verwendet man ein separates .git
- Unterverzeichnis, damit Punktdateien zur Systemkonfiguration (.bashrc
, .vimrc
usw.) im Hauptverzeichnis verbleiben, während der .git
-Ordner an einem anderen Speicherort aufbewahrt wird.
Zugehöriges Material
git branch
Lösung anzeigen
Git kennenlernen mit Bitbucket Cloud
Anwendung von "git rebase"
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 <directory>
Erstelle im angegebenen Verzeichnis ein leeres Git-Repository. Wenn du diesen Befehl ausführst, wird ein neues Unterverzeichnis mit dem Namen <directory> erstellt, das nichts enthält außer dem .git
- Unterverzeichnis.
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 wird ausgecheckt. Mehr dazu erfährst du auf der Seite zu git clone.
Bare-Repositorys: git init --bare
git init --bare <directory>
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.
Am häufigsten verwendet man git init --bare
, um ein zentrales Remote-Repository zu erstellen:
ssh <user>@<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 deinem Rechner 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
git init <directory> --template=<template_directory>
Alle Konfigurationen von git init
erfordern ein <directory>
-Argument. Wenn du das
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=
Gibt das Verzeichnis an, aus dem die genutzten Vorlagen stammen. (Siehe oben den Abschnitt zu den Git init-Vorlagen).
--SEPARATE-GIT-DIR=
Erstellt eine Textdatei mit dem Pfad zu
. 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.
- Das Git-Projekt solltest du in einem öffentlich zugänglichen 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
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.
Beispiele
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
Diesen Artikel teilen
Nächstes Thema
Lesenswert
Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.