Git tag before or after merge?

GitGit Tag

Git Problem Overview


I have a simple question about tagging different versions of my project with git. If I just completed my 1.1 branch and plan to merge it into master, should I tag this branch as 1.1 before I merge it, or should I merge it to master and then tag it as 1.1? Would it make a difference either way? Maybe one way is preferred? Thanks.

Git Solutions


Solution 1 - Git

Depends. Will the branch fast-forward into master?

If the answer is 'yes' then it doesn't matter whether you tag it before or after doing the fast-forward merge, because the tagged commit will be the same either way.

If the answer is 'no', then you should probably tag it after merging into master (assuming you cut releases from master). In general you want your tags to match your releases (to make it easier to look at the version of the code that was released), so you tag the version in the place you're making releases from.

Solution 2 - Git

It all depends on your distribution model. If 'master' is your main release line, I would imagine that 1.1 isn't really 'done' until it successfully merges into the main line, in which case, you should tag after merge.

Note: I've seen some projects use master as a dev branch and then have separate branches for 'stable' versions (not a model that I agree with). In the this case, you tag before merge.

Solution 3 - Git

Agree with the @Amber's answer. (My preferred way)- once you have fast-forwarded merge strategy in place then it doesn't matter where you are tagging your release. one more advantage of this kind of (ff-only) merge strategy is

  • You can tag your release (v1.0.1)
  • create a pull/merge request to master branch
  • set some rules before merging (number of approvals needed before merging to master)
  • git graph generated are pretty clean

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1699176View Question on Stackoverflow
Solution 1 - GitAmberView Answer on Stackoverflow
Solution 2 - GitnevsanView Answer on Stackoverflow
Solution 3 - GitShreyas DeshpandeView Answer on Stackoverflow