277 Stimmen

Zu einem anderen Git-Tag wechseln

Wie kann ich die Version 1.1.4 des rspec-Bündel ?

cd ~/Library/Application\ Support/TextMate/Bundles/
git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle
osascript -e 'tell app "TextMate" to reload bundles'

481voto

Klonen Sie das Repository wie gewohnt:

git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle

Dann checken Sie den gewünschten Tag wie folgt aus:

git checkout tags/1.1.4

Dadurch wird das Tag in einem "abgetrennten HEAD"-Zustand ausgecheckt. In diesem Zustand "können Sie sich umsehen, experimentelle Änderungen vornehmen und diese committen, und [diese Commits verwerfen], ohne irgendwelche Zweige durch einen weiteren Checkout zu beeinflussen".

Um alle Änderungen beizubehalten, verschieben Sie sie in einen neuen Zweig:

git checkout -b 1.1.4-jspooner

Sie können zum Master-Zweig zurückkehren, indem Sie:

git checkout master

Wie bereits in der ersten Überarbeitung dieser Antwort erwähnt, gibt es eine weitere Möglichkeit, ein Tag auszuchecken:

git checkout 1.1.4

Wie jedoch in einem Kommentar erwähnt wurde, führt dies, wenn Sie einen Zweig mit demselben Namen haben, dazu, dass Git Sie warnt, dass der Referenzname zweideutig ist und den Zweig standardmäßig auscheckt:

warning: refname 'test' is ambiguous.
Switched to branch '1.1.4'

Die Kurzschrift kann sicher verwendet werden, wenn das Repository keine gemeinsamen Namen für Zweige und Tags verwendet.

93 Stimmen

Für vorbeifahrende Betrachter ist diese Antwort zweideutig. Wenn es einen Zweig und ein Tag namens 1.1.4 . Git checkt den Zweig aus, nicht das Tag. Um das Tag explizit auszuchecken, tun Sie dies: git checkout tags/1.1.4

2 Stimmen

Wie kommen wir zurück zum "Stamm"?

5 Stimmen

@VinayWadhwa git checkout master

82voto

chharvey Punkte 7371

Ab dem Git v2.23.0 (August 2019), git switch ist vorzuziehen gegenüber git checkout wenn Sie einfach die Zweige/Tags wechseln. Ich vermute, dass sie dies getan haben, weil git checkout hatte zwei Funktionen: zum Wechseln von Zweigen und zum Wiederherstellen von Dateien. In Version 2.23.0 wurden daher zwei neue Befehle hinzugefügt, git switch und git restore um diese Anliegen zu trennen. Ich würde sagen, irgendwann in der Zukunft, git checkout wird veraltet sein.

Um zu einem normalen Zweig zu wechseln, verwenden Sie git switch <branch-name> . So wechseln Sie zu einem Commit-ähnlichen Objekt, einschließlich einzelner Commits und Tags verwenden git switch --detach <commitish> , donde <commitish> ist der Tag-Name oder die Commit-Nummer.

Le site --detach Option zwingt Sie zu erkennen, dass Sie sich in einem Modus der "Inspektion und verworfene Experimente" . Um einen neuen Zweig von dem Commitish, zu dem Sie wechseln, zu erstellen, verwenden Sie git switch -c <new-branch> <start-point> .

10 Stimmen

Git switch unterstützt den Wechsel zu einem Zweig. Der Wechsel zu einem Tag wird nicht unterstützt.

14 Stimmen

git switch --detach <tag> wie zum Beispiel git switch --detach v1.10 funktioniert recht gut

3 Stimmen

@Progman , siehe bitte den 2. Absatz dieser Antwort.

5voto

VonC Punkte 1117238

chharvey 's réponse schlägt vor

Um zu einem Commit-ähnlichen Objekt, einschließlich einzelner Commits und Tags, zu wechseln, verwenden Sie git switch --detach <commitish> , donde <commitish> ist der Tag-Name oder die Commit-Nummer.

Eigentlich ist Git 2.36 (Q2 2022) klarer: die Fehlermeldung, die durch " git switch HEAD~4 " ( man ) " wurde präzisiert, um die " --detach "Option, die erforderlich ist.

Ver Übergabe 808213b (25. Februar 2022) von Alex Henrie ( alexhenrie ) .
(Zusammengefasst von Junio C. Hamano -- gitster -- in 061fd57 übertragen , 06. März 2022)

switch : Erwähnung der --detach Option beim Sterben aufgrund einer fehlenden Verzweigung

Abgezeichnet von: Alex Henrie

Benutzer, die es gewohnt sind, die git checkout <tag> ( man ) davon ausgehen, dass git switch <tag> ( man ) wird das Gleiche tun.
Informieren Sie sie über die --detach Option, damit sie sich nicht fragen müssen, warum git switch funktioniert nicht, aber git checkout tut.

git config umfasst nun in seinem Manpage :

suggestDetachingHead

Hinweis angezeigt, wenn git switch weigert sich, HEAD zu lösen ohne die ausdrückliche --detach Option.

Die Fehlermeldung wird angezeigt:

a branch is expected, got tag 'xxx'
If you want to detach HEAD at the commit, try again with the --detach option

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X