Gitの一番好きなコマンドといっても過言ではない  reflog 。
すごく便利なので、使いましょうと言う話です。
簡単にいえば、 reflog で過去を探索し、 reset で好きなタイミングに戻ることができるというテクニックです。
開発していると、ここまでいじっちゃったけど、ここまで戻したいとかそういう欲が出てきます。 そういうときに是非使って欲しいコマンドです。
では説明していきます。
まず説明用に、いくつかファイルを作り、コミットなり色々しときます。
$ cd ~/work/
$ mkdir git
$ cd git/
$ git init
Initialized empty Git repository in /Users/masudak/work/git/.git/
# 適当にファイルを作る
$ touch sample.txt
$ git status
On branch master
Initial commit
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    sample.txt
$ git add sample.txt
$ git commit
[master (root-commit) 4544b55] initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 sample.txt
$ ls
sample.txt
# ブランチきる
$ git checkout -b hotfix-sample
Switched to a new branch 'hotfix-sample'
# また適当にファイルを作る
$ touch sample2.txt
$ git add sample2.txt
$ git commit
[hotfix-sample 3d7c0f6] sample
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 sample2.txt
$ ls
sample.txt  sample2.txt
ここで reflog !!
こんな感じで、履歴を見ることができます。大事なのは一番左の列の文字の羅列(ハッシュ)。
$ git reflog
3d7c0f6 HEAD@{0}: commit: sample
4544b55 HEAD@{1}: checkout: moving from master to hotfix-sample
4544b55 HEAD@{2}: commit (initial): initial commit
4544b55 に戻ってみましょう!
$ git reset --hard 4544b55 HEAD is now at 4544b55 initial commit
戻れたかみてみる。
$ git log -1
commit 4544b551e874d864a55de13ced8d5f8ce4045795
Author: masudak <masuda@sample.com>
Date:   Thu Jun 23 19:52:35 2016 +0900
    initial commit
$ ls
sample.txt
戻れたー。
終わりに
非常に便利ですので、覚えておくとかなり移動が楽になります。 是非是非使ってみてください!ではでは!