メインコンテンツまでスキップ

気軽に試そう

「とりあえずやってみる」を更にサポートしてくれる機能「Stash」

今やってることは「ちょっとこっちに置いといて」

実装の優先順位が変わったとかで、今やってる作業を中断して、他の機能を作ることを要求されること、あるとおもいます。

そんなとき今までは、今の作業がブロッカーになって、「優先度が高いのは、分かっちゃいるけど、まだ作れない」なんてことになっていたかもしれませんが、Gitはこれも助けてくれます。

図にするとこんなイメージです

一括置換

スタッシュは、コミットを汚さないためのもの

スタッシュは、コミットを汚さないためにあります。「多少うまく動いてないけど、いいや、1回コミットしちゃお」と思ったときは「ひょっとしてスタッシュでいいかも?」と、考えてみてください。

VSCode でスタッシュする

「ソース管理」の以下のメニューから、「変更」の中身をスタッシュします。

(未追跡ファイル)というのは、今回の変更で新規作成されたファイルという意味です。大概(未追跡ファイルを含む)の方でOKです。

スタッシュする

メニューを選択すると、ウィンドウ上部で「スタッシュメッセージ」を求められるので、コミットメッセージと同じく、分かりやすいコメントを入力してエンターを押してください。

スタッシュメッセージの入力

これで、スタッシュが完了しました。

Git Graphで見ると、コミットに似たスタッシュのログが記録されていて、HTMLのコードは、Diffは無くなり、変更前の状態に戻っています。

Git Graph で見るスタッシュ

スタッシュでリセットされたコード

スタッシュメッセージは必須ではない

スタッシュメッセージは、空のままでも問題ありません、その場合は、「WIP」と自動で入力されます。WIP(ウィップ)とは、 Work In Progress つまり「やり途中」という意味です。気軽に使っていこうぜ!というGit開発者の意図を感じます。

ファイルを選り分けてスタッシュはどうやるの?

ファイルを指定してスタッシュするコマンドは、Git の機能としてはあるのですが、VSCodeではサポートされていません。(サポートされてるプラグインはどこかにあるかも)ソフトウェアポリシーなのか、単に実装が追いついてないだけなのかは分かりませんが、現状でも「ステージ」を使うことでファイルを選り分けることが可能です。

ステージされたDiffはスタッシュに含まれませんので、うまく使ってみてください。

VSCode でスタッシュから変更を復帰させる

では、今度は、保存したスタッシュから、変更(Diff)を再現させてみます。

スタッシュからの復帰は、Git Graphから行うのがオススメです。

スタッシュを右クリックしたメニューから、「Apply Stash」を選択してください。

Git Graph でスタッシュからDiffを再現

Diffが再現され、test.htmlのコードもスタッシュの内容に変更されました。

Git Graph でスタッシュから再現されたDiff

VSCode で使い終わったスタッシュを削除する

Git Graphで見ると、スタッシュの線に色が付き、枝分かれしていることが分かると思います。

(枝の色はランダムだと思って差し支えありません)

スタッシュは「どの状態(コミット)から派生したか?」が重要な要素になりますので、Git Graphでは、このような形で表現されます。

Git Graph でフォークで表現されるスタッシュ

このままコミットを重ねていくと、スタッシュはこんな感じに↓削除しない限りは、残り続けます。消さなくても問題はまったくありませんが、「なんか見た目が汚れて嫌だな」と思う場合は、スタッシュを削除しましょう。

残り続けるスタッシュ

「Drop Stash」が、スタッシュを削除するメニューです。

スタッシュの削除

Apply Stash -> Drop Stash を 自動でやってくれる Pop Stash

スタッシュはその性質ゆえに、すぐ要らなくなることもしばしばなので、Diffの再現と同時に削除もしてくれるコマンド「Pop Stash」が用意されています。慣れてきたら使ってみてください。

「破棄」するくらいなら、「スタッシュ」する

「途中までやってみたけど、ダメだった。戻そ。」と思ったとき、破棄するくらいなら、スタッシュをしましょう。

スタッシュは、「ガラクタ置き場」だったり、「ゴミ箱」だったり、「机の隅」だったり、色々な使い方が出来る、自由スペースです。

カリキュラム後半では、グループウェアとしてのGitの機能に触れていきますが、Gitを操作する上で、「今の変更どうしよ」となることはままあるのですが、Stashが助けてくれます。

痒いところに手が届く機能であるということです。

スタッシュは共有されない

スタッシュは、自分にしか見えていません。ローカルリポジトリの、今使っているPCにのみにしか保存されていません。良くも悪くもある特性です。お気をつけください。