git ready

learn git one commit at a time
by Nick Quaranto, O-Show(@oshow)

変更を stash しよう

committed 10 Jan 2009

stash を使えば現在の作業を安全に保存して、後でまた簡単に復元できる。例えば画期的な機能を開発中に、同一リポジトリ中のソースコードのバグを直す緊急の仕事が舞い込んだとしよう。まず作業中の変更をステージングする。

git add .

あるいは、必要なファイルを個別に add する。次に、以下のコマンドで変更を stash する。

git stash

ドーン! ここでワーキングディレクトリは、作業を始める前の状態に戻る。さて、ちゃちゃっとバグは直した? ならば以下を使って先ほどの作業を復元する。

git stash apply

stash は上に幾つも重ねることができる。よって適用する stash を選ぶならば、

git stash list

上記コマンドで現在の stash を確認する。重なった stash の下の方を選択するのは、難しいことじゃない。上から数えて2番目の stash を適用するには、こうだ。

git stash apply stash@{1}

次のようにして、一番上の stash をさくっと適用する事も出来る(ありがとう、jamesgolick! )。

git stash pop

このコマンドには注意点がある。git stash apply と違い、適用した stash を list から永久に削除してしまうことだ。手動で stash を削除するには、以下を使う。

git stash drop <id>

あるいは全ての stash を削除するには、以下を実行する。

git stash clear