git stash

コマンドの概要

ワーキングツリー、インデックスの内容を一時的に別の場所に保存するコマンド。
ブランチをgit switchするとき、ワーキングツリーとインデックスはコミット済みでクリアである必要があるので、まだコミットできないけどブランチを切り替える必要がある場合などに利用する。

コマンドの使い方

退避したい状況でgit stashを実行する。

$ git stash

Saved working directory and index state WIP on branch: aaaaaaa commit

と、ワーキングツリー、インデックスの内容とともに、実行したブランチ、そのときのHEADが記録される。

一覧を確認するには、

$ git stash list

stash@{0}: WIP on branch: aaaaaaa commitA
stash@{1}: WIP on branch: bbbbbbb commitB

// 差分も表示するとき
$ git stash list -p

stashの内容を確認するには

1$ git stash show stash@{0}

stashしたものをワーキングツリーに戻すには

$ git stash apply stash@{0}

// 直近のstashのstash@{0}がデフォルト指定されているので、stash@{0}は省略可能。
$ git stash apply

また、git stash applyは現在チェックアウトしているブランチに戻すので、ブランチを間違えてしまったときにも使える。

stashを削除する

stash は消さないとどんどんたまっていくので、不要なstashを削除するには

1$ git stash drop stash@{0}

applyしつつ、dropするには、pop

1$ git stash pop stash@{0}

stashをすべて削除するには、

1$ git stash clear