Last day, I faced a case where I had to backport a bug in a software which was released by a git tag.
As far I know, there is no easy way to simply push a patch before a tag, so here is how I proceeded:
# Checkout the upstream
git checkout master
git fetch --all
git pull
# List the tags
git tag
1.0.0
1.1.0
Let’s say we want to add a commit before 1.0.0:
# Create a branch from the tag
git checkout -b backport_1.0.0 1.0.0
# Apply your backport
touch fix
git add fix
git commit -m "Fix a bug"
git push -u origin backport_1.0.0
Recreate the tag:
git checkout master
# Delete the tag
git tag -d 1.0.0
git push origin :refs/tags/1.0.0
# Create the tag from the branch
git tag -a 1.0.0 backport_1.0.0
git push --tags origin master
That’s it! If you checkout the new tag, you should see your “fix” patchset as the last patch before the tag 1.0.0.