> Git is intuitive with a small number of concepts necessarry to grasp my whole workflow.
http://jordi.inversethought.com/blog/on-gitology/ explains git's complexity extremely well (without even getting into horribleness of the command line UI). The following is a key quote, though you should read the whole thing.
The following gitological concepts are not particular to git:
* repositories (repos)
* commits or changesets (csets)
* directed acyclic graph (DAG)
* branches
* pushing and pulling changes
* whole-repo tracking, not individual files
* rebasing csets
* pushing and pulling csets
The following are purely gitological and add unnecessary complexity, in addition to eventually being unavoidable:
* Exposing the index/staging area
* Exposing other implementation details: blobs, trees, commits, refs
* refs and refspecs
* Branches are refs
* Detached HEADs (a.k.a “not on a branch”)
* Distinguishing remote and local tracking branches
* Choosing which branch to pull onto
* Bare repos
* Hard, soft, mixed resets
* Porcelain vs plumbing