That said hg is the better choice for big software shops IMO, because of the lower training cost and because they probably won't use github anyway.
Considering more people know git I would assume the training cost for hg is higher.
And yet I have noticed that people find merging and branching much easier than in mercurial. Few people understand the implications of named branches in hg.
That's the first time I've heard this opinion - do you know what kind of complaints people have?
In my experience, it's much easier to say 'When you start work on an issue, start a branch called 'issue-XXX', then once you're done we will merge it into the default branch'. I've never seen much confusion in response to that.
In contrast, git branches symlink to a different ref, whenever you commit to it.
A git tag could be called bookmark intuitively.
But I still use git because I already grokked it before I learned hg.
What about the index? Or the branching (bookmarks kinda work now I think), or the better remote management?
Now, what can I do to see all changes I have made so far?
I have done this many times with subversion (svn diff) and mercurial (hg diff). Git's index just get in the way.
Why? I find that in the middle of a big project I have lots of stupid files strewn about that I absolutely don't want checked in (TODO lists, patches I'm considering, copies of large log files I'm investigating, etc). I always add things explicitly and delete explicitly, otherwise I'd get random junk checked into my repo. How do you keep your repo clean enough to actually use automatic commands like that?
I guess other people just aren't as messy as I am?
That's the default of what git does even without a command.
[alias]
addremove = !git add . && git add -u
That will do it though, so it's not too hard to add. -a, --all
Tell the command to automatically stage files
that have been modified and deleted, but new
files you have not told Git about are not affected.