git stashで新規追加したCSSや画像も一時的に退避させる方法


はじめに

フロントエンド周りを担当している野口です。

昨年の8月に入社して、約9ヶ月が経過しようとしています。入社当時はバックエンドのエンジニア5名(インターン含む)、フロントエンドエンジニアは私ひとりで、デザイナーは不在でした。現在はというと、バックエンドのエンジニア10名(インターン含む )、変わらずフロントエンドはひとりで、デザイナー2名といったメンバー構成です。

作り手の人数が倍以上になり、プロジェクトも複数走り、GitHub のトピックブランチの数が入社当時と比べてえらい増えたな〜と。10名のバックエンドのエンジニアに囲まれ、複数プロジェクトやタスクを並行して作業しているので、ブランチを切り替えることが頻繁に発生します。急な修正もあったりしますし。

そんな時はおなじみの git stash で一時的に変更を退避させます。commit してしまい、あとで reset するとか他にも退避させる方法はありそうですが、さっと退避できるので git stash を使っています。

あとで何の作業を stash したかわかるようにメッセージ付きで stash したり、あまり長い期間 stash したままにしておかないようにしたり、不要なものは drop や clear するようにしたり。git stash list した時に整理された状態になっているように気をつけています。

git stash

前置きが長くなりましたが、ここからが本題です。

$ git stash

git stash だけでは新しく追加したCSSや画像を退避させることができません。CSSや画像をよく扱うデザイナーやマークアップエンジニアにとっては、まとめて退避したいものです。

どうやら git stash はあくまで作業ディレクトリで追跡しているファイルのうち変更されたものだけを退避してくれるようです。なので、新しく追加したCSSや画像はまだ Git で追跡されていないので、git stash で退避できないのです。未追跡なので、git stash すると「「No local changes to save」」と表示されます。

解決方法

新しくCSS(ラクスルはSassを導入しているのでSCSSファイル)や画像を追加することはよくあることなので、どうにか退避させたいですよね。。
実は下記で退避できます!

$ git stash -u

git stash に -u のオプションをつけるだけ。

$ git stash save -u "hoge"

メッセージを付けたいときはこう。

もうすでに知っているよという人もいるかもしれないですが、知らなかった方はぜひ使ってみてください!

おわりに

最後に記事内で紹介したコマンドを一覧にしておきます。

$ git stash 現在の作業を一時的に退避(Gitで追跡しているファイルのみ)
$ git stash -u 現在の作業を一時的に退避(Gitで未追跡のファイルも含む)
$ git stash save -u “hoge” 上記 git stash -u にメッセージを付ける

ラクスルでは現在Gitが好きなWebデザイナーを絶賛募集中です!
<ラクスル採用サイト>