I'm trying to figure out how I can download a particular tag of a Git repository - it's one version behind the current version.
I saw there was a tag for the previous version on the git web page, with object name of something long hex number.
But the version name is "Tagged release 1.1.5
" according the site.
I tried a command like this (with names changed):
git clone http://git.abc.net/git/abc.git my_abc
And I did get something - a directory, a bunch of subdirectories, etc.
If it's the whole repository, how do I get at the version I'm seeking? If not, how do I download that particular version?
I'm not a git expert, but I think this should work:
OR
The second variation establishes a new branch based on the tag, which lets you avoid a 'detached HEAD'. (git-checkout manual)
Every git repo contains the entire revision history, so cloning the repo gives you access to the latest commit, plus everything that came before, including the tag you're looking for.
I checked the git checkout documentation, it revealed one interesting thing:
So we can mention the tag name( as tag is nothing but a name of a commit) as, say:
P.S: In Git, you can't update a tag directly(since tag is just a label to a commit), you need to checkout the same tag as a branch and then commit to it and then create a separate tag.
===================================
I just did this. First I made sure I knew the tag name spelling.
This gave me a list of tags on my git server to choose from. The original poster already knew his tag's name so this step is not necessary for everyone. The output looked like this, though the real list was longer.
I picked the tag I wanted and fetched that and nothing more as follows.
I then tagged this on my local machine, giving my tag the same name.
I didn't want to clone the remote repository as other people have suggested doing, as the project I am working on is large and I want to develop in a nice clean environment. I feel this is closer to the original questions "I'm trying to figure out how do download A PARTICULAR TAG" than the solution which suggests cloning the whole repository. I don't see why anyone should have to have a copy of Windows NT and Windows 8.1 source code if they want to look at DOS 0.1 source code (for example).
I also didn't want to use CHECKOUT as others have suggested. I had a branch checked out and didn't want to affect that. My intention was to fetch the software I wanted so that I could cherry-pick something and add that to my development.
There is probably a way to fetch the tag itself rather than just a copy of the commit that was tagged. I had to tag the fetched commit myself. EDIT: Ah yes, I have found it now.
Where you see the colon, that is remote-name:local-name and here they are the tag names. This runs without upsetting the working tree etc. It just seems to copy stuff from the remote to the local machine so you have your own copy.
with the --dry-run option added will let you have a look at what the command would do, if you want to verify its what you want. So I guess a simple
is the real answer.
=
A separate note about tags ... When I start something new I usually tag the empty repository after git init, since
requires a commit, and the question arises "how do you rebase changes that include your first software change?" So when I start working I do
i.e. create a commit before my first real change and then later use
if I want to rebase all my work, including the first change.