気軽に試そう
「とりあえずやってみる」を更にサポートしてくれる機能「Stash」
今やってることは「ちょっとこっちに置いといて」
実装の優先順位が変わったとかで、今やってる作業を中断して、他の機能を作ることを要求されること、あるとおもいます。
そんなとき今までは、今の作業がブロッカーになって、「優先度が高いのは、分かっちゃいるけど、まだ作れない」なんてことになっていたかもしれませんが、Gitはこれも助けてくれます。
図にするとこんなイメージです
スタッシュは、コミットを汚さないためにあります。「多少うまく動いてないけど、いいや、1回コミットしちゃお」と思ったときは「ひょっとしてスタッシュでいいかも?」と、考えてみてください。
VSCode でスタッシュする
「ソース管理」の以下のメニューから、「変更」の中身をスタッシュします。
(未追跡ファイル)というのは、今回の変更で新規作成されたファイルという意味です。大概(未追跡ファイルを含む)の方でOKです。
メニューを選択すると、ウィンドウ上部で「スタッシュメッセージ」を求められるので、コミットメッセージと同じく、分かりやすいコメントを入力してエンターを押してください。
これで、スタッシュが完了しました。
Git Graphで見ると、コミットに似たスタッシュのログが記録されていて、HTMLのコードは、Diffは無くなり、変更前の状態に戻っています。
スタッシュメッセージは、空のままでも問題ありません、その場合は、「WIP」と自動で入力されます。WIP(ウィップ)とは、 Work In Progress つまり「やり途中」という意味です。気軽に使っていこうぜ!というGit開発者の意図を感じます。
ファイルを指定してスタッシュするコマンドは、Git の機能としてはあるのですが、VSCodeではサポートされていません。(サポートされてるプラグインはどこかにあるかも)ソフトウェアポリシーなのか、単に実装が追いついてないだけなのかは分かりませんが、現状でも「ステージ」を使うことでファイルを選り分けることが可能です。
ステージされたDiffはスタッシュに含まれませんので、うまく使ってみてください。
VSCode でスタッシュから変更を復帰させる
では、今度は、保存したスタッシュから、変更(Diff)を再現させてみます。
スタッシュからの復帰は、Git Graphから行うのがオススメです。
スタッシュを右クリックしたメニューから、「Apply Stash」を選択してください。
Diffが再現され、test.htmlのコードもスタッシュの内容に変更されました。
VSCode で使い終わったスタッシュを削除する
Git Graphで見ると、スタッシュの線に色が付き、枝分かれしていることが分かると思います。
(枝の色はランダムだと思って差し支えありません)
スタッシュは「どの状態(コミット)から派生したか?」が重要な要素になりますので、Git Graphでは、このような形で表現されます。
このままコミットを重ねていくと、スタッシュはこんな感じに↓削除しない限りは、残り続けます。消さなくても問題はまったくありませんが、「なんか見た目が汚れて嫌だな」と思う場合は、スタッシュを削除しましょう。
「Drop Stash」が、スタッシュを削除するメニューです。
スタッシュはその性質ゆえに、すぐ要らなくなることもしばしばなので、Diffの再現と同時に削除もしてくれるコマンド「Pop Stash」が用意されています。慣れてきたら使ってみてください。
「破棄」するくらいなら、「スタッシュ」する
「途中までやってみたけど、ダメだった。戻そ。」と思ったとき、破棄するくらいなら、スタッシュをしましょう。
スタッシュは、「ガラクタ置き場」だったり、「ゴミ箱」だったり、「机の隅」だったり、色々な使い方が出来る、自由スペースです。
カリキュラム後半では、グループウェアとしてのGitの機能に触れていきますが、Gitを操作する上で、「今の変更どうしよ」となることはままあるのですが、Stashが助けてくれます。
痒いところに手が届く機能であるということです。
スタッシュは、自分にしか見えていません。ローカルリポジトリの、今使っているPCにのみにしか保存されていません。良くも悪くもある特性です。お気をつけください。