🤔

git stashしたら「No local changes to save」と出て「🤔」となった話

に公開

はじめに

git stashって便利ですよね〜

コミットやステージングまではしたくない変更差分があって、

その状態でcheckoutしたい、みたいな時ってあると思います。

そんな時、

git stash

とすることで簡単に変更差分を避難させることが出来るので、重宝しています!

困ったこと、その原因...

ただ、このコマンドをしても

$ git stash
No local changes to save

となってしまったことがありました...

原因はgit stashが対象にとることが出来る変更差分は

  • ステージングしている(git addをしている)ファイル
  • または、過去にコミットしたことがあり、追跡対象になっているファイル

こういった条件を満たしている時のようでした...

つまり、このメッセージが出ているということは、

上記の条件を満たしておらず、

追跡されていないファイルということ...

例えば、

新しくファイルを作って、それをステージングしたりコミットしたりしていない

こういった場合にはgit stashとするだけではダメでした...

解決策

ではどうするのかと言うと、

git stash -u

このようにします。

-uを付与することで、未追跡のファイル(untracked)も含めて避難させることが出来ます。

参照

https://git-scm.com/docs/git-stash

Discussion