A few years ago, we transitioned from subversion to git for our version control system. There is no doubt that git is much more powerful, although we likely under-use it. But even with the limited set of commands we use, people are still finding the command line interface quite complex, in particular when things get messy, for instance after a failed rebase or merge.
We had documented all the commands in our internal Wiki, but that was a bit dry. Then we found a diagram on the Internet (http://justinhileman.info/article/git-pretty/) from Justin Hileman, that seemed like a good summary of what people can do to recover. It was a bit old, though, and git has acquired new commands since then (surprise, surprise). So we updated it, and would like to share it with you now.