git checkoutでブランチを変更するとワーキングツリーやインデックスにある変更内容(まだコミットしてない内容)は移動先のブランチに反映されてしまう。 その為移動前のブランチに作業を残したいが作業が途中でコミットしたくない場合などにgit stash
で作業内容を一時退避できる。
git stash (save) #saveは省略できる。 #stash時にメッセージをつける(この際saveは省略出来ない) git stash save "stash message"
退避させた変更一覧を表示
git stash list stash@{0}: WIP on master: f03882a 1st commit #stash@{0}→stash名 #master→ブランチ名 #f03882a→stashした際のHEADのコミットID(短縮表示) #1st commit→コミットメッセージ
退避させた変更を戻す
git stash apply stash@{0}
コマンドを実行した際にいるブランチに戻す。コマンドを実行するブランチを変えれば退避したブランチ以外のブランチに戻すこともできる。
退避した作業を消す
git stash drop stash@{0}
git apply
では戻すだけで消えない。
退避した作業をすべて消す
git stash clear
退避した作業を元に戻すと同時に、stashのリストから消す
git stash pop stash@{0}
退避した変更をもとに戻す際にコンフリクトが発生する場合などもあるので、消すのは同時にしなくてもよいかもしれません。
新規追加したファイルも退避させる
*メモ :コミットIDは160ビット(40文字)で生成されるがコミットの指定には短縮表示の先頭の7文字で表示されることが多い。