I work in a department where no one has ever used source control before, including myself.I am trying to push the concept. I have spent a little while researching SVN. I some basics learned. I can Create/update/checkout/commit with command line and from Tortoise. I am starting to learn how to tag and branch but still confused a lot about conflicts between branches and trunk etc. I am still learning, but I do not have a physical person who can show me anything. Its all from books/tutorials and trial and error.From what I have read online it seems like git is the better thing to know, but its also more complicated. I don't want to overwhelm myself. Should I continue to master svn before moving to git or would I be wiser to just jump to git now?Are there pros and cons to both approaches?
Should I understand SVN before I jump to GIT?
svn;git
NoGit is so radically different from SVN it won't help you. If anything you will be looking for update and commit commands and wondering why everything is different.Start with Git from the Bottom Up and go from there.Contrasting a standard centralized update / commit pattern versioning system with Git is like comparing a bus with mass transit. A bus will get you (and everyone else) from point A to point B using the exact same route. Mass transit will get you from point A to point B using whatever route you like.Distributed itself has disadvantages you should be aware of. It takes more work to keep everyone on the same page. It offers a huge increase in flexibility though.Revision hashes vs. NumbersSomeone mentioned Git using SHA1 hashes while Hg uses numbers.First you rarely (if ever) need to deal directly with the hashes in daily commits / pulls. You need to pull up the log and pull hashes if you are doing diffs or some of the more tricky rebasing items. With Git, everyone has the same hashes. Different repositories don't have different commit numbers and everyone is on the same page. With Hg this is less so. In practice if you have to pull up the commit hashes and work with them (either for comparing or traversing the code's timeline) it's easier to sync with other people when you have hashes instead of numbers.