where I set up my git & hg aliases

Git and Mercurial. They are the same thing, but they are completely different things.

I also don’t want to remember many different commands for common things, e.g. tag --list vs. tags.

Git alias tags = tag --list? No, I don’t want to turn git into hg or vice versa. But what are other options?

Vim!

No, not using git/hg from Vim. Git and hg like vim. All vim commands map letters to things. The first letter is the action, then modifiers and objects. d10w means delete 10 words. But in version control, we have much less objects than in text editing. You can break text/code into words, sentences, lines, paragraphs, arguments, s-expressions, functions, indentation levels, and so on. Version control? Files, commits, tags, branches and a couple others. It definitely makes more sense to put the object first.

bc = branch create
bl = branch list
br = branch remove
cc = commit create
cl = commit list (log)
cr = commit remove (the last one. It’s called “uncommit”, “rollback” and other things)
fa = file add
fc = file create (touch, git/hg add, $EDITOR)
ff = file forget
fm = file move
fr = file remove
wr = working copy reset (discard changes, a.k.a. “I screwed up”)
ws = working copy status
and so on.

.gitconfig and .hgrc. Take them.

P.S. it might be awesome to have modifiers (eg. c10l = list 10 last commits), but that has to be a wrapper around git/hg. That’s overkill for my taste, but you can make it if you don’t think so ;-)