
This book uses practical examples to explain version control with both centralized and decentralized systems. Topics covered include: basic version control commands and concepts; introduction to Distributed Version Control Systems (DVCS); advanced branching workflows; strengths and weaknesses of DVCS vs. centralized tools; best practices; and how distributed version control works under the hood. Featuring these open source version control tools: Apache Subversion, Mercurial, Git and Veracity.
The explanation is given for both centralized version control systems, using SVN, as well as for distributed version control systems, using Mercurial and Git (and Veracity).
Give it a try. The digital editions (PDF/EPUB/MOBI) are free for download I think.
I for one had a really hard time grasping Git, until I wiped my VC-mindset slate clean, it was primarily my upbringing in a development environment where Centralized Version Control was the king. I read up on Eric Sink's Version Control By Example. It's a great book to lay-out the fundamentals of Git. If you wrap yourself around the concept and not the tool, the use of tools (Git commandlines, Git GUI's) will come naturally.
The book is free or can be purchased and explains both git and Mercurial with similar examples. We use it at our office to get novices up to speed on source control.
I have a free account on Github and use the Windows app. The interface has a Metro look, but it's not a Metro app. The downside of Github is that all free account repositories on Github are public, and I have a use case, coursework for Coursera classes, that make public repositories inappropriate.
For that I have a free account on Bitbucket because it allows private repositories. I access that using Atlassian's free version of SourceTree. What I like about SourceTree is that it exposes more of the guts of version control. If command line Git is C, it's Java, and the Github app is...well, it's an app.
The mention of the command line is not accidental. Once I start wanting to do something a little advanced, the step by step descriptions for implementation will invariably use the command line because at it's core Git is not an app; it is a system with a command language, and the command language maps directly onto Gits underlying concepts in a specific way versus the generic language of click here, select that, type this, click there...etc. of app usage.
As a twenty odd year user of Windows, it feels very unnatural to say this, but learning the command line is something to be embraced.
Lastly, my thanks to Eric Sink for the free! [hard!] copy of his book Version Control by Example which he graciously provided as an "Offer HN:" a couple of years ago. It provides consistent examples which cover the general issues across different types of version control systems. When I finally got around to using version control, I reread it more thoroughly than when I was merely interested in the topic.
http://www.amazon.com/Version-Control-Example-Eric-Sink/dp/0...
"Thank you for requesting a copy of "Version Control by Example".
"Before your request can be processed, you will need to verify your email address. You will be receiving an email from us shortly with instructions to verify your request."