For a nice overview of the source control concepts of "branches" and "tags", this little article is really nice:
http://betterexplained.com/articles/a-v ... n-control/. It's SVN-centric, but the concepts can be applied to Git. The most important thing to understand about the term "tag" is that it has NOTHING to do with tagging anything in Flare. Rather, a source-control "tag" is a named point in time at which one wants to preserve a collection of files.
My co-authors and I always commit our changes to the "trunk" (SVN) or push our commits to the "master" (Git). But when we have come to the end of a release cycle, say 1.0, then we create a tag called "1.0". That way, if we ever need to go back to the Flare project as it existed at that point in time, we've got that named point in time.
In my own practice, we rarely create branches. Just haven't had the need. The few times we have created branches, some of them ended up being abandoned (their changes not merged back into the trunk), while others did get merged back in. But I know that there are users here on the forums who use branching all the time.
There have been lots of discussions on the forums here about branching, tagging, etc. Also, the Better Explained guy also has an article, albeit geeky, on Git:
http://betterexplained.com/articles/aha ... rning-git/ and another on the general concept of distributed version control, which is what Git is:
http://betterexplained.com/articles/int ... lustrated/.