I’ve used Subversion, Source Safe, TFS and others. Today I use Git for hosting most of my projects. I chose to do it to learn the tool, the environment and the paradigms behind it. It also started mostly because my professional work requires it. And I like it this way.
Git is a distributed version control system (DVCS).
With a DVCS, you don’t check-out a copy of the server data. You clone it. You would something like git clone xyz.
Because of that, you can easily work remotely.
Git was initially created to manage the Linux Kernel. Linus Torvalds is actually the founder of Git.
Operations on Git are really really really fast. You don’t need network access to have them execute.
Because I tend to travel, Git become very useful when I’m away from the office. Actually, my office is anywhere I can have an access to my laptop, some juice and/or milk.
All operations can executed without being connected to the network:
Diff, File History, Commit, Log, Create branches, Switch branches, etc.
Git uses its own proprietary database. It will also never accidentally alter the content of your file. Anything you commit is exactly the same thing you get out. This is because you access data in Git using the checksum.
Git is awesome and extremely different from other version control systems.
It also uses pointers and move them over when you execute operations. If you delete a branch, the data still remains on your machine. The pointer to the branch is deleted.
If you are very comfortable with using a version control system which is not Git, you may very like hate Git when you start using it. If you want to learn Git and like it, forget all you know about the way to work with other systems. Before Git, I had worked with TFS for about 5 years straight, and SVN before that and other systems before that time. Today, I do all my operations regarding source control inside a command line. And I love it. It’s light, fast, and efficient. I can adapt myself to any other version control system anytime, but at the moment, I’m enjoying Git and I will probably continue to use it for my other projects for a long time to go.
Git makes it very easy to create branches and work on them independently, then merge them later. It is very smart at doing merges well.
It’s recommended to use fetch and merge instead of rebase.
The following is a great video by Scott Chacon, from GitHub in which he explains Git and its functioning.
Git Pro book
Linus Torvalds on Git
15 minutes to larn Git in a browser for free
Learn about Git branching
Help on GitHub
GitHub training videos
Scott Chacon blog
Think Like a Git by Sam Livingston-Gray
Notes on Git
Git concepts simplified