git diff --name-only SHA1 SHA2
git diff --name status [TAG|SHA1]
git ls-tree -r --name-only <tree-ish>
can used for change HEAD after git reset --hard HEAD~
git log ~= git whatchanged
# what files being changed
git log --oneline --name-status <HASH> -1
git whatchanged -1 --format=oneline | wc -l
https://www.atlassian.com/git/tutorial/git-basics#!log
git-show - Show various types of objects
http://git-scm.com/docs/git-show
http://stackoverflow.com/questions/4114095/revert-to-previous-git-commit
https://www.atlassian.com/git/tutorial/undoing-changes#!revert
In a nutshell, git revert saves changes in the git history
