切换到另一个Git标签


192

如何检查rspec捆绑软件的版本version / tag 1.1.4 ?

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'

Answers:


346

正常克隆存储库:

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

然后像这样签出您想要的标签:

git checkout tags/1.1.4

这将签出处于“分离头”状态的标签。在这种状态下,“您可以环顾四周,进行实验性更改并将其提交,并[丢弃那些提交],而不会通过执行另一次签帐而影响任何分支”。

要保留所做的任何更改,请将它们移至新分支:

git checkout -b 1.1.4-jspooner

您可以使用以下方法返回到master分支:

git checkout master

请注意,正如该答案的第一版中提到的,还有另一种签出标签的方法:

git checkout 1.1.4

但是,正如评论中提到的那样,如果您有一个同名的分支,这将导致git警告您refname不明确,并且默认情况下签出该分支:

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

如果存储库未在分支机构和标签之间共享名称,则可以安全地使用速记。


79
对于路过的观众来说,这个答案是模棱两可的。如果有一个分支和一个名为的标签1.1.4。Git将检出分支,而不是标签。要明确签出标签,请执行以下操作:git checkout tags/1.1.4
ocodo

2
我们如何回到“树干”?
Vinay W 2014年

4
@VinayWadhwa git checkout master
ABCD.ca 2015年

1
要查看标签,只需发出git tag
ACK_stoverflow

15

Git v2.23.0起(2019年8月),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选项会迫使您认识到您处于“检查和可丢弃实验”模式。要从您要切换的commitish创建一个新分支,请使用git switch -c <new-branch> <start-point>


git switch支持切换到分支。不支持切换到标签。
Progman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.