git stash
は今やっている作業を一旦止めて、他の作業に移りたいというときに用いられます。
仕事をしていて、そのような場面に出くわすことが多くなりました。
その度に『これどう書くんだったけ…?』と汚い手書きメモを見返すのが面倒になったので、まとめておきます。
git stashとは
git stash
とはGitで作業を一時的に避難させておくことができる機能です。
例えば、Aというブランチでバグの修正をしていたところ、「こっちの修正を先にお願い!」と言われました。
そのため、割り込んできた修正作業をBブランチですることにしました。
しかしAブランチでの作業がやりかけなので、残しておきたいです。
この時に用いるのが、作業を一旦退避することができる、git stash
です。
git stashの使い方
現在の作業を一時的によけておく
$ git stash save
最終コミットから、現在までの作業を一旦まとめて保存してよけておくことができます。
作業の内容を記載して保存する
$ git stash save "message"
save
のあと"message"をつけると、作業の内容をメモしておくことができます。
『このよけたものはどんな作業していたときのものだっけ…?』とあとでなるのを防いでくれます。
よけておいた作業のリストを見る
$ git stash list
一旦おいておいた作業はひとつだけではないかもしれません。
過去によけた作業の一覧はgit stash list
で取得できます。
stash@{0}: On branchB: B作業途中
stash@{1}: On branchA: A作業途中
コマンドを実行すると上記のように一覧が表示されます。
一番左では作業ごとに0, 1…と引数が割り振られます。
よけておいた作業を戻す
git stash pop stash@{引数}
横においておいた作業はgit stash pop
を用いて簡単に戻すことができます。
作業を止めておいたブランチに戻り、pop
の後に一覧で見られる戻したい作業の引数を用いてstash@{引数}
と記述し、実行します。
stash@{0}: On branchB: B作業途中
stash@{1}: On branchA: A作業途中
例えば、A作業途中という内容の作業に戻りたい場合は、git stash pop stash@{1}
とします。
よけておいた作業を消す
$ git stash drop stash@{引数}
横においておいた作業を消したいときはgit stash drop
を用います。
消したい作業の指定方法はgit stash pop
と同じです。
作業を全て消す
git stash clear
一覧にある全ての作業を消したいときは、git stash clear
を使用します。
以上がgit stashについての簡単なまとめです。