Переключиться на другой тег Git


181

Как проверить версию / тег версии 1.1.4 пакета 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'

Ответы:


337

Клонируйте репозиторий как обычно:

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

Затем отметьте нужный тег так:

git checkout tags/1.1.4

Это извлечет тэг в состоянии «отделен от головы». В этом состоянии «вы можете осмотреться, внести экспериментальные изменения и зафиксировать их, а также [отменить эти фиксации], не влияя на какие-либо ветви, выполнив другую проверку».

Чтобы сохранить сделанные изменения, переместите их в новую ветку:

git checkout -b 1.1.4-jspooner

Вы можете вернуться к основной ветке, используя:

git checkout master

Обратите внимание, как было упомянуто в первой редакции этого ответа, есть еще один способ извлечения тега:

git checkout 1.1.4

Но, как упоминалось в комментарии, если у вас есть ветвь с тем же именем, это приведет к тому, что git предупредит вас, что refname неоднозначно, и проверит ветку по умолчанию:

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

Сокращение можно безопасно использовать, если хранилище не разделяет имена между ветками и тегами.


78
Для зрителей-водителей этот ответ неоднозначен. Если есть ветка и тег называется 1.1.4. Git будет проверять ветку, а не тег. Чтобы явно git checkout tags/1.1.4
оформить

2
Как нам вернуться к «сундуку»?
Vinay W

3
@VinayWadhwa git checkout master
ABCD.ca

1
И чтобы увидеть теги, просто выдать git tag.
ACK_stoverflow

8

Начиная с Git v2.23.0 (август 2019 г.), git switchпредпочтительнее, git checkoutкогда вы просто переключаете ветки / теги. Я предполагаю, что они сделали это, поскольку git checkoutимели две функции: для переключения веток и для восстановления файлов. Таким образом, в v2.23.0 они добавили две новые команды git switch, и git restore, чтобы разделить эти проблемы. Я бы предсказал, что в какой-то момент в будущем git checkoutэто будет осуждается.

Чтобы переключиться на обычную ветку, используйте git switch <branch-name>. Чтобы переключиться на объект, похожий на коммит, включая отдельные коммиты и теги, используйте git switch --detach <commitish>, где <commitish>находится имя тега или номер коммита.

В --detachопции заставляет вас признать , что вы находитесь в режиме «проверки и DISCARDABLE экспериментов» . Чтобы создать новую ветку из коммита, на который вы переключаетесь, используйте git switch -c <new-branch> <start-point>.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.