One of the most useful features of any version control system is the ability to "undo" your mistakes. In Git, "undo" can mean many slightly different things.
NayaRead shows a summary and links to the original article. The full article is hosted on github.blog.