For a lot of these, I would suggest using bash with the git bash-completion scripts (one for git and one for the git prompt). Then you can tab-complete most of these. The advantage is that you subconsciously learn/remember all the underlying commands which makes looking up the man pages easier, but also makes it easier to move from machine to machine where the other machine may not have as much environment set up. I often log in to coworkers' machines to help them out with stuff, and many of these commands look like things I'd help them with, so learning the actual commands is still handy.