章: 第6章: 現場で差がつく補助操作
作業中なのに、急に別件へ切り替えたいことがある
実務では、今触っている作業を最後まで終えてから次に進めるとは限りません。
- レビュー修正が急に来る
- 緊急バグ対応を先にやる必要が出る
- 別ブランチへすぐ切り替えたい
このとき困るのが、「まだコミットしたくない途中変更」が作業ツリーに残っている状態です。
そこで使うのが stash です。
stash は、作業中の変更をいったん退避して、作業ツリーを一時的にきれいな状態へ戻すための仕組みです。
どういうとき便利か
たとえば機能追加の途中で、まだ中途半端な変更があるとします。しかし今すぐ main に戻って別件対応したい。
そういうときに、
git stash
としておけば、作業中の変更を一時退避できます。
あとで戻したいときは、たとえば次のようにします。
git stash pop
これで、退避していた変更を作業ツリーへ戻せます。
なぜコミットではだめなのか
もちろん「途中でもコミットすればよい」と考えることもできます。これは場面によっては正しいです。
ただし、
- まだ意味のある単位になっていない
- 履歴に残したくない途中状態
- 一時的に逃がしたいだけ
というケースでは、無理にコミットすると履歴がノイズだらけになります。
そのため、stash は「履歴へ残すほどではない途中作業」の避難場所として便利です。
実務でよくある使いどころ
- 作業途中で別ブランチへ切り替えたいとき
- Pull する前に未整理変更を一時退避したいとき
- 緊急対応を先に進める必要があるとき
一言でいえば、stash は「今の作業を捨てずに保留する」ための機能です。
注意点
便利だからといって、stash を長く溜め込みすぎると何を退避したのかわからなくなります。
また、戻すときに現在の変更と衝突することもあります。
つまり stash は便利な一時置き場ですが、長期保管庫ではありません。
実務では「すぐ戻す前提」で使う方が安全です。
チェックポイント:
stashはコミットの代わりではなく、一時退避のための仕組みです。履歴を汚さずに作業を切り替えるために使います。
まとめ & 次のステップ
stashは作業中の変更を一時退避する仕組み- コミットしたくない途中状態を避難させたいときに便利
- 緊急対応やブランチ切り替えで役立つ
- 長く溜め込みすぎると管理しづらくなる
- 一時置き場として短期的に使うのが実務では安全
次回は bisect を扱います。 「いつ壊れたのか」を効率よく絞り込む調査手順として、かなり実務的な価値があります。