A git repository contains the all history at all time.
So when you are cloning a repository, you are cloning it with its full history, and then, you can make a branch from whatever commit you want:
$ git checkout -b aNewBranch SHA1
with SHA1 representing the commit id from which you want to proceed.
Branches in Git are just a way to keep track of one path of a DAG (Directed Acyclic Graph) which is the set of commits representing the history of a Git repository.
It is a mere pointer you assign to one of those commits, and it will keep moving along with each new commits.
See Pro Git book for more.
You can mark a specific commit with a tag, which, like a branch, is a mere pointer, but an immutable one (it wont move when you make new commit).
You will use preferably annotated tags, which are stored as full objects in the Git database. They’re checksummed; contain the tagger name, e-mail, and date; have a tagging message; and can be signed and verified with GNU Privacy Guard (GPG).
The "Graphical Interfaces" section of InterfacesFrontendsAndTools page on Git Wiki lists the various GUI for Git at the moment.
You will see many questions about the difference between Git and SVN: see my answer (or this one) for example.
My most complete answer about the fundamental differences between Git and SVN is here:
"which of the two is better:git or SVN".
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…