**「緊急で対応しないといけない仕事ができた!ブランチを切り替えないといけない!でも今作業してるところで、まだコミット前の作業が残ってる。。。」**
そんな時に便利なGitのコマンド stash について解説!実務でも使用する場面があるかもなので、まだ知らない方は必見!早速いきましょう!
stash
stashとは、ワーキングツリーやステージングエリアとは別の領域の事で、例えばワーキングツリーで変更した内容や、ステージングエリアに移動させた変更情報を、一時的に避難させる事(保存と同じような事)ができる領域になります。
ここでは主に、
- stashへの避難のコマンド
- stashした情報の確認コマンド
- stashした情報の復元コマンド
- stashした情報の削除コマンド
save
まずはstash領域に、現在のワーキングツリーの変更情報と、ステージングエリアに移動した情報を、避難させる方法です。コマンドはこちら。
$ git stash save
このコマンドを行うと、作業しているリポジトリ内が最新のコミットの状態に戻ります。その為、ワーキングツリーやステージングエリアの情報を気にせず、安心してブランチの切り替えを行うことができます。
また、saveコマンドは省略して、以下のように書く事も可能です。
$ git stash
どちらを使用しても動作自体は変わりません。
list
次にstashエリアに避難させた情報を、リストで表示して確認する方法です。コマンドはこちら。
$ git stash list
これは復元したい時に、スタッシュ名が必要になりますので、それの確認などに使用します。またstash情報が複数ある場合も、これで確認することができます。
apply
次にstashエリアに避難させた情報を、復元する方法です。コマンドはこちら。
<!-- スタッシュ名が *stash@{1}* のワーキングツリー情報を復元 -->
$ git stash apply stash@{1}
このコマンドは、ワーキングツリーの情報のみの復元コマンドになります。その為、ステージングエリアの情報までは復元されません。
もし、ステージングエリアも含めて復元したい場合のコマンドはこちら。
<!-- スタッシュ名が *stash@{1}* のワーキングツリー情報とステージングエリア情報を復元 -->
$ git stash apply --index stash@{1}
こちらのコマンであれば、ワーキングツリー情報に加え、ステージングエリア情報も復元することができます。
drop
最後にstashエリアに避難させた情報を、stashエリアから削除する方法です。コマンドはこちら。
<!-- スタッシュ名が *stash@{1}* のワーキングツリー情報とステージングエリア情報を削除 -->
$ git stash drop stash@{1}
stashエリアは、あくまでも作業を一時避難させる為のエリアです。そのため、stashエリアに情報を残しておくのは、あまり得策とは言えません。
もし復元が終わり、不要になったstashエリアの情報は、その都度消していくようにしましょう。
また、stashエリアに存在する全てのスタッシュを削除する場合のコマンドはこちら。
$ git stash clear
これでstashエリアが、まっさらな状態になります。
まとめ
Gitの使い方は、stashに限らず複雑に見られることが多いですが、蓋を開けてみたら今回のように、非常にシンプルと言うことが多いです。またstashコマンドは実務でも使用する機会があるかもしれないので、頭の片隅にでも覚えておくと、役に立つかもしれません。ぜひ習得してみてください!
最後までご覧いただき、ありがとうございました!
筆者:yuki|学習10日目で初案件獲得→現在はフルスタックエンジニア転職に向けて学習中
Qiita:https://qiita.com/yuki4839
Twitter:https://twitter.com/yuki35522891