On watching TJ’s screencast, I was super impressed by his various swift git operations using shell aliases. Therefore, I adopted many of them with some customization. After that, I felt my git skill has improved significantly. The real reason was hidden until recently…
Originally, I thought, with those aliases, the friction to use various git operations is lowered (because I can type less for the same purposes now), so I will probably be using git more often. Therefore, I would become more proficient in using it. There’s nothing wrong in that reasoning, but that’s merely a minor point in comparing with the real reason.
The reason why I become more proficient in git is that those shell aliases provide me an opportunity to design a new interface reflecting the mental model as I understand the high level SCM concepts instead of following the original various git operations exposing the low level implementation details of git.
Some of representative examples in my aliases:
g = git status # since it's probably my mostly used operation