如何查看rspec bundle的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'

正常克隆存储库:

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

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

git checkout tags/1.1.4

这将以“分离HEAD”状态签出标签。在这种状态下,“您可以环顾四周,做出实验性的更改并提交它们,然后(放弃那些提交),而不会通过执行另一个签出来影响任何分支”。

要保留所做的任何更改,将它们移动到一个新的分支:

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'

如果存储库在分支和标记之间不共享名称,则可以安全地使用简写。


从Git v2.23.0(2019年8月)开始,当你只是切换分支/标签时,Git开关比Git签出更受欢迎。我猜他们这么做是因为git checkout有两个功能:切换分支和恢复文件。因此,在v2.23.0版本中,他们添加了两个新命令,git switch和git restore,以分离这些问题。我预测在未来的某个时候,git检出将被弃用。

要切换到正常的分支,使用git switch <branch-name>。要切换到一个类似提交的对象,包括单个提交和标记,请使用git switch——detach <commit >,其中<commit >是标记名或提交号。

detach选项迫使您认识到您正处于“检查和可丢弃的实验”模式。使用git switch -c <new-branch> <start-point>从你要切换到的commit创建一个新分支。


Chharvey的回答表明

要切换到一个类似提交的对象,包括单个提交和标记,请使用git switch——detach <commit >,其中<commit >是标记名或提交号。

实际上,Git 2.36 (Q2 2022)更清晰:“Git switch HEAD~4”(man)给出的错误信息已经被澄清,建议使用“——detach”选项。

参见Alex Henrie (alexhenrie)提交808213b(2022年2月25日)。 (由Junio C Hamano - gitster -在commit 061fd57中合并,2022年3月6日)

切换:当因为缺少分支而死亡时,提到——detach选项 署名:Alex Henrie

习惯于执行git checkout <tag>(man)的用户认为git switch <tag>(man)也会执行相同的操作。 告诉他们——detach选项,这样他们就不会奇怪为什么git switch不能工作,而git checkout可以。

Git配置现在包括在它的手册页:

suggestDetachingHead 当git开关拒绝分离HEAD时显示的建议 没有显式的——detach选项。

错误信息将显示:

期望有一个分支,标记为“xxx” 如果您想在提交时分离HEAD,请使用——detach选项再次尝试