Is there a simple command to convert a branch to a tag?
Was there separate development on these branches? (the post you linked to, doesn't appear to have development on those branches) If there was no development, you could:
- Checkout the branch
git checkout branchName
. - Tag it with
git tag tagName
. - Switch back to master
git checkout master
. - Finally, delete original branch with
git branch branchName -d
.
This can also be done if there was development on the branch, but you will need to use -D
instead of -d
. I'm not a git pro though, so not sure if that is an "acceptable" way to leave a branch.
The answers given are basically correct.
As tags and branches are just names for objects, there is a simpler way without touching current work area:
git tag <name_for_tag> refs/heads/<branch_name> # or just git tag <name_for_tag> <branch_name>
git branch -d <branch_name>
Or even do it to remote server without touching local repository at all:
git push origin origin/<branch_name>:refs/tags/<tag_name>
git push origin :refs/heads/<branch_name>
Per Andy's answer, I've made an alias that can also be used for the same thing:
[alias]
branch2tag = "!sh -c 'set -e;git tag $1 refs/heads/$1;git branch -D $1' -"
Usage
If you want to convert branch bug-2483 to a tag (while your main branch is master) write:
git branch2tag bug-2483 master
UPDATE 1
Changed to reflect the solution proposed by kauppi.