We are new to git, and I want to set a tag at the beginning of our repository. Our production code is the same as the beginning repository, but we've made commits since then. A tag at the beginning would allow us to "roll back" production to a known, stable state.
So how to add a tag to an arbitrary, older commit?
This question is related to
git
version-control
git-tag
# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02
# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"
# set HEAD back to whatever you want it to be
git checkout master
The answer by @dkinzer creates tags whose date is the current date (when you ran the git tag
command), not the date of the commit. The Git help for tag
has a section "On Backdating Tags" which says:
If you have imported some changes from another VCS and would like to add tags for major releases of your work, it is useful to be able to specify the date to embed inside of the tag object; such data in the tag object affects, for example, the ordering of tags in the gitweb interface.
To set the date used in future tag objects, set the environment variable
GIT_COMMITTER_DATE
(see the later discussion of possible values; the most common form is "YYYY-MM-DD HH:MM").For example:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
The page "How to Tag in Git" shows us that we can extract the time of the HEAD commit via:
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
We could extract the date of a specific commit via:
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
However, instead of repeating the commit twice, it seems easier to just change the HEAD to that commit and use it implicitly in both commands:
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"
OK, You can simply do:
git tag -a <tag> <commit-hash>
So if you want to add tag: 1.0.2 to commit e50f795
, just simply do:
git tag -a 1.0.2 e50f795
Also you add a message at the end, using -m
, something like this:
git tag -a 1.0.2 e50f795 -m "my message"
After all, you need to push it to the remote
, to do that, simply do:
git push origin 1.0.2
If you have many tags which you don't want to mention them one by one, just simply do:
git push origin --tags
to push all tags together...
Also, I created the steps in the image below, for more clarification of the steps:
You can also dd the tag in Hub or using tools like SourceTree, to avoid the previous steps, I logged-in to my Bitbucket in this case and doing it from there:
No tags
and click on the +
icon:This is an old question, and the answers already given all work, but there's also a new option which can be considered.
If you're using SourceTree to manage your git repositories, you can right-click on any commit and add a tag to it. With another mouseclick you can also send the tag straight to the branch on origin.
Use command:
git tag v1.0 ec32d32
Where v1.0 is the tag name and ec32d32 is the commit you want to tag
Once done you can push the tags by:
git push origin --tags
Reference:
Git (revision control): How can I tag a specific previous commit point in GitHub?
The answer by @Phrogz is great, but doesn't work on Windows. Here's how to tag an old commit with the commit's original date using Powershell:
git checkout 9fceb02
$env:GIT_COMMITTER_DATE = git show --format=%aD | Select -First 1
git tag v1.2
git checkout master
Building upon the answers of the others, here is a one-liner solution that sets the tag date to when it actually happened, uses annotated tag and requires no git checkout
:
tag="v0.1.3" commit="8f33a878" bash -c 'GIT_COMMITTER_DATE="$(git show --format=%aD $commit)" git tag -a $tag -m $tag $commit'
git push --tags origin master
where tag
is set to the desired tag string, and commit
to the commit hash.
The simplest way to do this is:
git tag v1.0.0 f4ba1fc
git push origin --tags
with f4ba1fc
being the beginning of the hash of the commit you want to tag and v1.0.0
being the version you want to tag.
Source: Stackoverflow.com