git clone
Erfahren Sie alles über den Git-clone-Befehl, seine Verwendung, häufige Konfigurationsoptionen sowie Git-URLs.
Was git clone bewirkt
Der Befehl git clone kopiert ein vorhandenes Repository in ein neues Verzeichnis auf Ihrem Rechner. In einem einzigen Schritt:
- Erstellt er das Zielverzeichnis und initialisiert darin ein neues lokales Repository (Sie müssen nicht zuerst git init ausführen).
- Lädt er die vollständige Projekthistorie herunter — jeden Commit, jeden Branch und jeden Tag.
- Fügt er das Quell-Repository als Remote mit dem Namen
originhinzu. - Erstellt er für jeden Branch des Remote-Repositories einen Remote-Tracking-Branch und checkt den Standard-Branch (in der Regel
mainodermaster) in Ihr Arbeitsverzeichnis aus.
So erhalten fast alle Entwickler eine Arbeitskopie eines gemeinsam genutzten Projekts, weshalb git clone üblicherweise der erste Git-Befehl ist, den Sie bei einem neuen Projekt ausführen.

Grundlegende Verwendung
Die allgemeine Form des Befehls nimmt eine Repository-URL und optional einen Verzeichnisnamen entgegen:
git clone <repo> [<directory>]Ein Beispiel: das Klonen eines Projekts über SSH von einem Server, der unter example.com mit dem Benutzernamen x_person erreichbar ist:
git clone ssh://[email protected]/path/to/team-project.git
cd team-project
# Start editing files, committing snapshots, and pushing to the remoteDadurch wird ein neues Repository im Ordner team-project initialisiert und mit dem Inhalt des zentralen Repositorys befüllt. Nach dem Klonen können Sie mit cd in das Projekt wechseln und damit beginnen, Dateien zu bearbeiten, Snapshots zu committen und mit dem Remote zu interagieren.
In einen bestimmten Ordner klonen
Standardmäßig benennt Git das neue Verzeichnis nach dem Repository. Um in einen Ordner Ihrer Wahl zu klonen, fügen Sie ein <directory>-Argument hinzu:
git clone https://example.com/team-project.git my-project
cd my-projectDamit wird das Repository in my-project statt in team-project geklont.
Einen einzelnen Branch oder Tag klonen
Übergeben Sie --branch (Kurzform: -b) mit einem Branch-Namen oder Tag, um etwas anderes als den Standard-Branch des Remote zu auszuchecken:
# Check out the develop branch instead of the default
git clone --branch develop https://example.com/team-project.git
# Check out the state at tag v1.0 (results in a detached HEAD)
git clone --branch v1.0 https://example.com/team-project.gitWenn Sie einen Tag angeben, wird der Arbeitsbaum an diesem Tag im Zustand detached HEAD ausgecheckt, da ein Tag kein Branch ist, auf den Sie committen können.
Nützliche Clone-Optionen
Mit diesen Optionen können Sie anpassen, was git clone herunterlädt und wie sich das neue Repository verhält.
--depth (flacher Clone)
--depth <n> erstellt einen flachen Clone, der nur die letzten <n> Commits anstelle der gesamten Historie enthält. Dies ist bei großen Repositories deutlich schneller und wird häufig in CI-Pipelines verwendet, in denen die vollständige Historie nicht benötigt wird.
git clone --depth 1 https://example.com/team-project.git--single-branch
--single-branch lädt nur die Historie eines einzigen Branches herunter (den Standard-Branch oder den mit --branch angegebenen), anstatt alle Branches. Diese Option wird durch --depth impliziert.
git clone --single-branch --branch main https://example.com/team-project.git--recurse-submodules
Wenn das Projekt Submodule verwendet, klont --recurse-submodules diese und checkt sie im selben Schritt aus, sodass Sie danach nicht noch git submodule update --init ausführen müssen.
git clone --recurse-submodules https://example.com/team-project.git-o (Remote umbenennen)
Standardmäßig wird die Quelle als Remote origin hinzugefügt. Verwenden Sie -o <name>, um einen anderen Namen zu wählen. Informationen zur Verwaltung von Remotes danach finden Sie unter git remote.
git clone -o upstream https://example.com/team-project.git--bare und --mirror
--bareerstellt eine Kopie des Repositorys ohne Arbeitsverzeichnis. Das resultierende Repository enthält die Projekthistorie und kann mit Push und Pull genutzt werden, hat aber keine ausgecheckten Dateien zum Bearbeiten. Dies ist das Format, das für Repositories verwendet wird, die auf einem Server leben.--mirrorimpliziert--bare, geht aber weiter: Es kopiert alle Refs (Branches, Tags, Notizen, Remote-Tracking-Refs) und richtet den Remote so ein, dass der Spiegel eine exakte Kopie der Quelle bleibt. Es wird hauptsächlich zum Verschieben oder Sichern eines Repositorys verwendet.
git clone --bare https://example.com/team-project.git
git clone --mirror https://example.com/team-project.gitUnterschied zwischen git init und git clone
git init und git clone werden oft verwechselt. Der wesentliche Unterschied:
git initerstellt ein brandneues, leeres lokales Repository — es gibt noch keinen Remote und keine Historie.git clonekopiert ein vorhandenes Remote-Repository auf Ihren Rechner, bringt dessen vollständige Historie mit und konfiguriertoriginautomatisch.
git clone erfordert nicht, dass Sie zuerst git init ausführen; es initialisiert das lokale Repository und richtet die Remote-Tracking-Branches für Sie ein.
Git-URLs
Git hat seine eigene URL-Syntax, um Befehlen mitzuteilen, wo ein Remote-Repository liegt. Da git clone fast immer auf ein Remote-Repository abzielt, ist das Verständnis dieser URLs wichtig. Git unterstützt vier Protokollfamilien: Git, SSH, HTTPS und Lokal. Alle außer HTTPS erfordern, dass Git auf dem Server installiert und aktiv ist.
Git-Protokoll
Das Git-Protokoll ist einzigartig für Git. Es wird von einem Daemon bereitgestellt, der auf Port 9418 lauscht und anonymen, überwiegend lesenden Zugriff ähnlich wie SSH bietet, jedoch ohne jegliche Authentifizierung.
git clone git://host.xz/path/to/repo.gitSein Vorteil ist eine schnelle Übertragung. Seine Nachteile sind das Fehlen einer Authentifizierung (weshalb es selten für Schreibzugriffe verwendet wird) und ein aufwändigeres Server-Setup.
SSH-Protokoll
Secure Shell (SSH) ist ein Netzwerkprotokoll zum sicheren Anmelden von einem Computer an einem anderen. Es ist das gebräuchlichste Protokoll für authentifizierten Lese-/Schreibzugriff, und SSH-Zugriff ist auf den meisten Hosting-Plattformen standardmäßig konfiguriert. Sie müssen vor der Verbindung Anmeldeinformationen (einen SSH-Schlüssel) beim Server einrichten.
git clone ssh://user@server/project.git
# Many hosts also accept the shorter "scp-like" form:
git clone user@server:project.gitSSH verschlüsselt und authentifiziert den gesamten Datenverkehr, komprimiert Daten vor der Übertragung und ist einfach zu konfigurieren. Seine Hauptbeschränkung ist, dass es keinen anonymen Zugriff unterstützt. Weitere Informationen zum Einrichten von Schlüsseln finden Sie in unserem Abschnitt SSH-Schlüssel.
HTTPS-Protokoll
HTTPS (HyperText Transfer Protocol Secure) ist das Protokoll zur sicheren Datenübertragung im Web, und Git kann Repositories darüber teilen.
git clone https://example.com/gitproject.gitHTTPS ist einfach einzurichten, verschlüsselt die Übertragung und passiert problemlos Unternehmens-Firewalls (Port 443 ist fast immer offen), was es zu einem der am häufigsten verwendeten Protokolle macht. Sein Hauptnachteil ist ein etwas höherer Overhead durch die Verschlüsselung, was das Klonen geringfügig langsamer machen kann als das reine Git-Protokoll.
Lokales Protokoll
Beim lokalen Protokoll ist das „Remote"-Repository einfach ein anderes Verzeichnis auf derselben Festplatte oder einem gemeinsam genutzten Dateisystem. Wenn Teammitglieder ein Dateisystem teilen, können sie über einfache Pfade klonen, pushen und pullen.
git clone /opt/git/project.git
# Or with an explicit file:// URL:
git clone file:///opt/git/project.gitVerwandte Befehle
Nach dem Klonen behandeln diese Kapitel den alltäglichen Arbeitsablauf:
- git fetch und git pull — Updates vom Remote herunterladen und integrieren.
- git branch und git checkout — Branches erstellen und zwischen ihnen wechseln.
- git remote — den
origin-Remote, dengit cloneeingerichtet hat, anzeigen und verwalten.