I am not sure what your first question is, but I can answer the second question for you.
Just tag each version. 'v1.0', 'v1.1', 'v2.0'. Tags are completely separate from the branches, so the way you decide to process the tags does not depend on how you decide to process the branches.
For example, if your repo looks like this:
A
\
You can apply the tag to the branch E'and delete it safely test_branchwithout losing the code in E'. For this reason, it’s rare for people to maintain git branches for historical releases. Mark the release with the version number and feel free to delete any branches that you no longer need.
FWIW, , . , ( ) . - , .
re: .
: " "? , ?
, . , , , .
@VonC git -describe . , . , , , git describe - "v1.0". - "v1.0-10-abcd1234", , 10 v1.0 , .