Reputation: 7767
I'm currently working with a repository that has multiple branches.
When I create a tag, does that tag refer to the then-current branch?
In other words: Whenever I create a tag, do I need to switch to the desired branch and tag inside that branch so that the tag refers to that branch at that point in time?
Upvotes: 252
Views: 179569
Reputation: 37837
No, a git tag will apply to all branches that contain the commit that was tagged. It does not matter what branch you were in at the time of tagging.
Here's an example:
tag-a
will appear for both branch1
and branch2
, even though it was tagged "from" branch1
.tag-b
will appear in branch1
only, it will not appear in branch2
tag-c
will appear in branch2
only, it will not appear in branch1
a---b---> branch1
\
--c---> branch2
Script to reproduce example:
git switch -c branch1
echo a > a.txt; git add a.txt; git commit -m "a.txt"
git tag tag-a
git switch -c branch2
echo c > c.txt; git add c.txt; git commit -m "c.txt"
git tag tag-c
git switch branch1
echo b > b.txt; git add b.txt; git commit -m "b.txt"
git tag tag-b
git switch branch1
git log --oneline --graph
* e564800 (HEAD -> branch1, tag: tag-b) b.txt
* 5c82b05 (tag: tag-a) a.txt
git switch branch2
git log --oneline --graph
* 67c3177 (HEAD -> branch2, tag: tag-c) c.txt
* 5c82b05 (tag: tag-a) a.txt
Upvotes: 2
Reputation: 8357
A related and useful command is
git branch --contains tag/<tag>
which will give you a list of all the branches a provided tag is on
Upvotes: 1
Reputation: 1751
If you want to tag the branch you are in, then type:
git tag <tag>
and push the branch with:
git push origin --tags
Upvotes: 4
Reputation: 2046
If you want to create a tag from a branch which is something like release/yourbranch
etc
Then you should use something like
git tag YOUR_TAG_VERSION_OR_NAME origin/release/yourbranch
After creating proper tag if you wish to push the tag to remote then use the command
git push origin YOUR_TAG_VERSION_OR_NAME
Upvotes: 1
Reputation: 81
We can create a tag for some past commit:
git tag [tag_name] [reference_of_commit]
eg:
git tag v1.0 5fcdb03
Upvotes: 7
Reputation: 437988
CharlesB's answer and helmbert's answer are both helpful, but it took me a while to understand them. Here's another way of putting it:
git show <tag>
to see a tag's details contains no reference to any branches, only the ID of the commit that the tag points to.
6f6b5997506d48fc6267b0b60c3f0261b6afe7a2
)git tag v0.1.0 # tags HEAD of *current* branch
git tag v0.1.0 develop # tags HEAD of 'develop' branch
git describe
to describe the current branch:
git describe [--tags]
describes the current branch in terms of the commits since the most recent [possibly lightweight] tag in this branch's history.git describe
may NOT reflect the most recently created tag overall.Upvotes: 325
Reputation: 5059
If you create a tag by e.g.
git tag v1.0
the tag will refer to the most recent commit of the branch you are currently on. You can change branch and create a tag there.
You can also just refer to the other branch while tagging,
git tag v1.0 name_of_other_branch
which will create the tag to the most recent commit of the other branch.
Or you can just put the tag anywhere, no matter which branch, by directly referencing to the SHA1 of some commit
git tag v1.0 <sha1>
Upvotes: 210
Reputation: 38004
When calling just git tag <TAGNAME>
without any additional parameters, Git will create a new tag from your current HEAD (i.e. the HEAD of your current branch). When adding additional commits into this branch, the branch HEAD will keep up with those new commits, while the tag always refers to the same commit.
When calling git tag <TAGNAME> <COMMIT>
you can even specify which commit to use for creating the tag.
Regardless, a tag is still simply a "pointer" to a certain commit (not a branch).
Upvotes: 11
Reputation: 90336
Tags and branch are completely unrelated, since tags refer to a specific commit, and branch is a moving reference to the last commit of a history. Branches go, tags stay.
So when you tag a commit, git doesn't care which commit or branch is checked out, if you provide him the SHA1 of what you want to tag.
I can even tag by refering to a branch (it will then tag the tip of the branch), and later say that the branch's tip is elsewhere (with git reset --hard
for example), or delete the branch. The tag I created however won't move.
Upvotes: 60