Przełącz się na inny tag Git

180

Jak sprawdzić wersję / tag wersji 1.1.4 pakietu rspec ?

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'
jspooner
źródło

Odpowiedzi:

336

Sklonuj repozytorium jak zwykle:

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

Następnie pobierz żądany tag:

git checkout tags/1.1.4

Spowoduje to pobranie tagu w stanie „odłączony HEAD”. W tym stanie „możesz rozejrzeć się, wprowadzić zmiany eksperymentalne i zatwierdzić je oraz [odrzucić te zatwierdzenia] bez wpływu na gałęzie, wykonując kolejne pobranie”.

Aby zachować wprowadzone zmiany, przenieś je do nowej gałęzi:

git checkout -b 1.1.4-jspooner

Możesz wrócić do głównej gałęzi za pomocą:

git checkout master

Uwaga, jak wspomniano w pierwszej wersji tej odpowiedzi, istnieje inny sposób pobrania tagu:

git checkout 1.1.4

Ale jak wspomniano w komentarzu, jeśli masz gałąź o tej samej nazwie, spowoduje to, że git ostrzeże cię, że nazwa odniesienia jest niejednoznaczna i domyślnie wyewidencjonuje gałąź:

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

Skrót można bezpiecznie używać, jeśli repozytorium nie udostępnia nazw między gałęziami i tagami.

Fałszywy kod Monkey Rashid
źródło
78
Dla widzów zachęcających do oglądania ta odpowiedź jest niejednoznaczna. Jeśli istnieje gałąź i tag o nazwie 1.1.4. Git pobierze gałąź, a nie tag. Aby wyraźnie git checkout tags/1.1.4
sprawdzić
2
Jak wrócimy do „pnia”?
Vinay W
3
@VinayWadhwa git checkout master
ABCD.ca
1
Aby zobaczyć tagi, po prostu wystaw git tag.
ACK_stoverflow
8

Od wersji 2.23.0 Git (sierpień 2019 r.) git switchJest to preferowane rozwiązanie niż git checkoutzwykłe przełączanie gałęzi / tagów. Domyślam się, że zrobili to, ponieważ git checkoutmieli dwie funkcje: do przełączania gałęzi i do przywracania plików. Tak więc w wersji 2.23.0 dodali dwa nowe polecenia git switch, i git restore, aby oddzielić te obawy. Przewiduję, że w pewnym momencie w przyszłości git checkoutzostanie wycofany.

Aby przełączyć się na normalną gałąź, użyj git switch <branch-name>. Aby przełączyć się na obiekt podobny do zatwierdzenia, w tym pojedyncze zatwierdzenia i tagi, użyj git switch --detach <commitish>, gdzie <commitish>jest nazwą znacznika lub numerem zatwierdzenia.

Te --detachsiły opcja rozpoznać, że jesteś w trybie „kontroli i discardable eksperymentów” . Aby utworzyć nową gałąź z zatwierdzenia, na który się przełączasz, użyj git switch -c <new-branch> <start-point>.

chharvey
źródło