Branch is just alternative history that can be merged one day back to the main
history. The main history branch is named `master` by default.
+# Checkout and reset to history
+NOTE: Commit all the changes before playing around with git history. It means
+that `git status` says *nothing to commit, working tree clean*.
+
+`git checkout COMMIT_ID` changes *HEAD* (where we are in git history right now)
+to some commit. Working tree is still clean.
+
+`git reset COMMIT_ID` again changes *HEAD* to some commit. However, it also put
+all the affected *patches* (patches that was commited after) to working
+directory (not staged, nor in git history).
+
+`git reset --hard COMMIT_ID` do the same as `git reset COMMIT_ID` except it
+*deletes all the affected patches*.
+
# Explore branches
`git branch` command show all the local branches and the active branch you are
currently on. Show remote branches by `git branch --all` command.