HOWTO · Git
Laden Sie ein bestimmtes Tag mit Git herunter
Sie können ein Repository mit einer bestimmten Tag-Version klonen.
Auf dieser Seite
Wenn Sie mit einem Repository bei einem bestimmten Git-Tag arbeiten möchten, klonen Sie es direkt mit diesem Tag oder wechseln Sie in einem vorhandenen Klon dorthin. Ein Tag bezeichnet einen bestimmten Commit, häufig einen Release-Stand. Das unterscheidet sich von git pull: Dieser Befehl integriert Änderungen aus einem Remote-Repository in den Branch, der gerade ausgecheckt ist.
Ein Repository bei einem bestimmten Tag klonen
Verwenden Sie git clone --branch <tag_name> <repository_url> und ersetzen Sie die Platzhalter durch den Tag und die Repository-URL. Die Option --branch akzeptiert sowohl einen Branch als auch einen Tag. Wenn Sie einen Tag angeben, checkt Git den zugehörigen Commit im neuen Klon aus; einen Branch erstellt Git dabei nicht. Ein normaler Klon ruft außerdem die Repository-Historie ab und beschränkt den Download nicht auf den Stand des Tags.
Führen Sie dieses lokale Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
set -eu
tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
git init --quiet "$tmpdir/source"
git -C "$tmpdir/source" config user.name "Example User"
git -C "$tmpdir/source" config user.email "example@example.com"
printf 'first version\n' > "$tmpdir/source/README.md"
git -C "$tmpdir/source" add README.md
git -C "$tmpdir/source" commit --quiet -m "Initial commit"
git -C "$tmpdir/source" tag v1.0.0
git -c advice.detachedHead=false clone --quiet --branch v1.0.0 "$tmpdir/source" "$tmpdir/checkout"
git -C "$tmpdir/checkout" describe --tags --exact-match
v1.0.0
Das Beispiel verwendet ein temporäres lokales Repository. So sehen Sie den ausgewählten Tag, ohne auf einen Remote-Dienst angewiesen zu sein. Ersetzen Sie in einem echten Befehl den lokalen Quellpfad durch die URL des Repositorys, das Sie klonen möchten.
Tags in einem vorhandenen Repository abrufen und auflisten
Wenn Sie bereits einen Klon haben und den gewünschten Tag nicht finden, rufen Sie die Tags mit git fetch --tags origin vom Remote ab. Ersetzen Sie origin durch den Namen Ihres Remotes, falls dieser anders lautet. Mit git tag --list zeigen Sie die lokal verfügbaren Tags an. Ein Muster wie git tag --list 'v2.*' schränkt die Liste ein. Durch das Abrufen werden Remote-Tags lokal verfügbar; der gerade ausgecheckte Branch oder Commit ändert sich dadurch nicht.
Ein frisch erstellter Klon enthält normalerweise die Tags des Remotes. Das erneute Abrufen ist hilfreich, wenn der Tag erst nach Ihrem letzten Abruf hinzugefügt wurde oder die Abrufkonfiguration des Repositorys ihn nicht einschließt. Wird der Tag weiterhin nicht angezeigt, prüfen Sie die Schreibweise und vergewissern Sie sich, dass er auf dem Remote vorhanden ist.
Einen Tag in einem vorhandenen Klon auschecken
Sobald der Tag lokal verfügbar ist, wechseln Sie mit git checkout <tag_name> oder git checkout tags/<tag_name> im Arbeitsverzeichnis dorthin. Ersetzen Sie den Platzhalter durch den exakten Namen aus der Ausgabe von git tag --list. Dadurch ändert sich, welchen Commit Ihr Arbeitsverzeichnis abbildet. Sichern oder committen Sie daher vorhandene Arbeit, bevor Sie wechseln. Beim Auschecken eines Tags landen Sie an dessen Commit mit losgelöster HEAD-Position; der aktuelle Branch wird nicht auf diesen Commit verschoben.
Einen Branch von einem Tag erstellen
Damit neue Commits einem Branch zugeordnet sind, erstellen Sie den Branch am Tag mit git checkout -b <new_branch_name> <tag_name>. Mit git checkout -b maintenance-v1 v1.0.0 starten Sie beispielsweise den Branch maintenance-v1 am Tag v1.0.0. Wenn Sie den Tag bereits ausgecheckt haben, erstellt git checkout -b <new_branch_name> einen Branch am aktuellen Commit. Danach können Sie wie gewohnt committen. Der Branchname hält Ihre Commits während der weiteren Arbeit erreichbar.
Losgelösten HEAD und das Klonverhalten verstehen
Ein Branch ist eine bewegliche Referenz auf Commits; ein Tag bleibt normalerweise mit dem Commit verbunden, den er bezeichnet. Bei einem losgelösten HEAD speichert Git den ausgecheckten Commit direkt, statt ihn einem Branch zuzuordnen. Dieser Zustand eignet sich dazu, einen Release-Stand zu prüfen, zu erstellen oder zu testen. Wenn Sie fertig sind, können Sie zu einem Branch zurückwechseln. Möchten Sie Änderungen committen, erstellen Sie am besten vorher einen Branch. Commits, die Sie mit losgelöstem HEAD erstellen, sind zunächst vorhanden, können später jedoch schwer zu finden sein, wenn kein Branch oder eine andere Referenz auf sie verweist.
Ein Klon bei einem Tag wählt diesen Tag für das Arbeitsverzeichnis aus; dadurch wird weder ein Branch erstellt noch der Klon automatisch flach. Für einen bewusst flachen Klon ergänzen Sie bei git clone eine Tiefenoption wie --depth 1. Damit wird die abgerufene Historie begrenzt. Das ist eine separate Entscheidung von der Auswahl des Tags. Klonen Sie vollständig, wenn Sie die Historie über den getaggten Commit hinaus benötigen, und erstellen Sie einen Branch vom Tag, wenn Sie neue Commits behalten möchten.