Switch to another Git tag

前端 未结 2 2027
天命终不由人
天命终不由人 2020-12-22 15:24

How do I check out version version/tag 1.1.4 of the rspec bundle?

cd ~/Library/Application\\ Support/TextMate/Bundles/
git clone git://github.com/rspec/rspec         


        
相关标签:
2条回答
  • 2020-12-22 15:50

    As of Git v2.23.0 (August 2019), git switch is preferred over git checkout when you’re simply switching branches/tags. I’m guessing they did this since git checkout had two functions: for switching branches and for restoring files. So in v2.23.0, they added two new commands, git switch, and git restore, to separate those concerns. I would predict at some point in the future, git checkout will be deprecated.

    To switch to a normal branch, use git switch <branch-name>. To switch to a commit-like object, including single commits and tags, use git switch --detach <commitish>, where <commitish> is the tag name or commit number.

    The --detach option forces you to recognize that you’re in a mode of “inspection and discardable experiments”. To create a new branch from the commitish you’re switching to, use git switch -c <new-branch> <start-point>.

    0 讨论(0)
  • 2020-12-22 16:07

    Clone the repository as normal:

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

    Then checkout the tag you want like so:

    git checkout tags/1.1.4
    

    This will checkout out the tag in a 'detached HEAD' state. In this state, "you can look around, make experimental changes and commit them, and [discard those commits] without impacting any branches by performing another checkout".

    To retain any changes made, move them to a new branch:

    git checkout -b 1.1.4-jspooner
    

    You can get back to the master branch by using:

    git checkout master
    

    Note, as was mentioned in the first revision of this answer, there is another way to checkout a tag:

    git checkout 1.1.4
    

    But as was mentioned in a comment, if you have a branch by that same name, this will result in git warning you that the refname is ambiguous and checking out the branch by default:

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

    The shorthand can be safely used if the repository does not share names between branches and tags.

    0 讨论(0)
提交回复
热议问题