【準備】前回のgit stashが残っていないかを確認する
git stash list
一時的な退避が残っていた場合
git stash clear
このコマンドですべて削除できます。
あくまで一時退避なので、長期間stashを残すのはオススメしません。
必要なものは残しておきます。
一部を削除したい時
git stash drop stash@{n}
ここがポイントなのですが一番最新の「git stash」したものが{0}になります。
古い退避は0,1,2,3,4,,,nと数字が大きくなっていきます。
【本編】stage前の変更を一時保存する
git stash
git stash save
コマンドはどちらでも構いません。上は単なる省略形です。
ちなみに、私は省略しないで下のコマンドを使います。
自分が何をしているのか忘れないために、極力省略形は使わない癖を付けています。
ブランチの移動
git branch
* develop
master
git checkout master
git branch
develop
* master
「git stash」をしたことでワーキングツリーがクリーンになりブランチの移動ができるようになります。
今回は、「develop」から「master」へ移動しています。多くの場合は、トピックブランチ(作業ブランチ)からバグフィックス(修正ブランチ)への移動が多いと思います。その後、トピックブランチへ戻ります。
修正作業が終わったら一時退避を元に戻します
git stash apply stash@{0}
ここで最新の「git stash」の番号は「0」になります。
「git stash」が溜まっていると、applyする番号を間違えやすいです。
「git stash apply」の番号を間違えた場合
git checkout .
上記のコマンドでワーキングツリーをクリアにして、前回のコミットまで戻します。
その後、再度正しい番号の「git stash apply stash@{n}」を行ってください。
さいごに
git stash list
git stash clear
最後に一時退避リストを確認してから、すべて削除しましょう。
一時退避を長期間残しておく、必要性はないです。