Gitツリー内での作業中に、別な作業が必要になってstash、ということは経験があるかもしれません。このstashがどういう動作をしているかを知ると、別の操作にしたほうがいいと思えるかもしれません。
git stashの内容
詳しい使い方は他記事に譲りますが、3行でまとめると、
-
git stash (save)
で、作業領域の変更が保存される -
git stash list
で、今までに行ったstashを一覧できる -
git stash pop
で復元できる
stashの欠点
あくまで簡便なものということもあって、git stash list
から見られるリストではどういう変更があったのかわかりづらくなっています。
一時保存用のブランチ
Gitの場合、実はブランチを切るといっても、内部的には先頭のコミットを指す1ファイル(40バイト)を作成するだけなので、ほとんど負荷はかかりません。本当に「とりあえず、片付ける」程度でないものについては、ブランチを切ったほうがあとあと探すときも便利ですし、管理もしやすいです。
一時保存
一時保存の場合、
- 保存用のブランチを切って、そちらに切り替える
- 変更したファイルをコミットする
- 素のブランチに戻す
というような手順で行えます。多少工数は多いですが、ブランチとして編集分が明確に残るようになります。
復元
一時ブランチに保存したものを復元する場合も、
- 保存ブランチに切り替える
- 復元したい場所へ
git rebase
する - 元のブランチに戻す
- 元のブランチから保存ブランチをマージする
- (保存ブランチを削除)
というようにできます。実は、stashの中身も名前のないブランチに対してこのような操作をやっているのと同様のものとなっています。
まとめ
stashは「隠す」という意味です。隠さないといけないほど混沌としたものならともかく、そうでないものならブランチで管理したほうが便利です。