stash したのに、ついてきたファイル

新規ファイルは袋に入らず、取り残される
新規ファイルは袋に入らず、取り残される

「全部 stash したはずなのに、切り替えた先のブランチに作りかけのファイルがある」。そんな経験はないだろうか。さっき作ったばかりの新規ファイルが、ワーキングツリーに残ったまま持ち越されている。切り替え先に同じ名前のファイルがあれば、上書きされるとして git switch が止まることもある。多くのエンジニアが一度は通る道だ。

実は git stash がデフォルトで退避してくれるのは、すでに Git の追跡下にあるファイルだけ。git add も git commit もまだ一度もしていない「新規ファイル」は、退避の対象から外れてしまう。これに気づかず何度も stash を打ち直してハマる人は多い。

対処は git stash -u(--include-untracked の略)を付けるだけ。これで新規ファイルも一緒に退避してくれる。普段から -u を癖にしておきたい。 もうひとつ、git stash list を見て「これ何の作業だっけ」と困ったことはないだろうか。退避するときに git stash push -m "色調整中" のように -m でメモを残しておくと、stash が増えても自分を助けてくれる。