変更を一時的に退避しよう!git stashを使いこなす5つのステップ

みなさんこんにちは。フリーランスプログラマーのsatoです。

開発に集中していたのに、急遽対応しなければならない別の修正が上がってくることもありますよね。しかし集中し開発していた内容が、まだコミットするほどに、まとまっていない状況だったら…。どうしようか迷ってしまうところだと思います。

しかしご安心を。gitには「stash」という、変更を一時的に退避することができる便利な機能が存在します。今回はそんなstashについて、実践的な使い方を見ていきましょう。

  • [基本]stashとは
  • [基本]stashを使うための5ステップ
  • [応用]stashをもっと活用しよう!
  • [応用]コンフリクトしたときは!?

5ステップで、実践的な使い方を一通りマスターしましょう。そのあとは、退避した処理と現行処理の差分の取り方など、応用的な内容を見ていきましょうか。それではよろしくお願いいたします。

stashとは

stashを一言で説明すると「変更を一時退避する処理」と言えるでしょう。主に、まだコミットはしなくない修正を、一時退避するために使われます。

使い方は非常に簡単です。

git stash [実行コマンド]

このように「git stash」に続けて、行いたいコマンドを指定するだけです。

例えば「git stash save」や「git stash list」といった感じですね。具体的にどんなコマンドがあるかや、どう使うかは実例を通して見ていきましょう。

stashを使うための5ステップ

では早速見ていきます。

現在、変更中の内容があるが、コミットできる状況ではない…

そんな状況で、stashを使用する例を見ていくことにしましょう。

①「git stash save」で退避!

では、早速一時退避を行ってみましょう!

git stash save

これだけです!stash saveを指定するだけで保存が可能です。

しかし、これだと一点問題が残ります。stashの保存時の名称は「[email protected]{0}」など機械的なものになってしまうためどのstashがどの退避なのか、非常にわかりづらくなります。そのためsaveする際には必ずメッセージを残しましょう

saveコマンドの後ろにメッセージをつけることで保存するデータにメッセージをつけることができます。

git stash save "任意のメッセージ"

このメッセージは、必ず設定しておきましょう。また今回は、以下のように「一時退避」というメッセージをつけたとして、続きを進めましょう。

git stash save "一時退避"

②「git stash list」で退避を確認!

ではちゃんと保存されているか確認しましょう!

確認はstash listコマンドです。

git stash list

このコマンドでは、保存されているstashを一覧表示できます。

実行時には以下のように情報が出力されます。

[email protected]{番号}」: On 「ブランチ名」: 「メッセージ」

先ほどのsaveを実行した後に、listを実行すると以下のように表示されるでしょう。

[email protected]{0}: On master: 一時退避

ちゃんと保存されているのが確認できたら一安心です!

③作業を済ませる

データの退避が確認できたら、もう安心です。急遽発生した作業を消化してしまいましょう。

④「git stash apply」で復旧作業!

作業が済んだら、一時退避した処理を復旧しましょう。

復旧には「stash applyコマンド」を使います。

git stash apply 復旧したいstash名

applyの後ろには、復旧したいstash名をつけましょう。

※ちなみに名前を省略すると、一番最新のstashを復旧します。stash名は先ほど学んだ「git stash list」で取得できます。仮に復旧したいstash名が「[email protected]{0}」だったとしたら、以下のようにコマンドを打ちましょう。

git stash apply [email protected]{0}

⑤「git stash drop」で退避データを削除!

復旧が無事完了したら、退避しているデータは削除しておきましょう。「stash drop コマンド」で削除が行えます。

git stash drop [email protected]{0}

※こちらも名前を省略すると、一番最新のstashを削除します。注意しましょう。削除して、後片付けまで終わればひと段落です!

stashをもっと活用しよう!

ここからはstashの応用的な使い方を見ていきましょう。

変更差分を調べるなら「git diff」

現在stashしている内容を、確認したい時があると思います。その時はdiffコマンドを使用しましょう。

以下のようにstash名を指定すれば、現在の内容との差分が表示されます。

git diff [email protected]{0}

また「--name-only」オプションをつけることで、変更のあるファイル名のみ探すことも可能です。

git diff --name-only [email protected]{0}

あとは、最後にファイル名を指定することで、指定ファイルの差分のみ表示することが可能なのも覚えておきましょう!

git diff [email protected]{0} ファイル名

applyとdropを同時に!「git stash pop」

「stash popコマンド」を使用することで「apply」と「rop」コマンドを同時に行うことができます。

git stash pop [email protected]{0}

復旧と削除が同時に行えるため、覚えておくと便利です。

コンフリクトしたときは!?

プログラムに修正をかけている最中に、stashを復旧した場合などにコンフリクトが起きることがあります。コンフリクトの解消については、マージの記事にまとめていますので、学んでおくことをお勧めします。

git mergeでブランチをマージしよう!いろんな疑問を徹底解説
更新日 : 2019年8月20日

まとめ

今回は更新の一時退避を学びました。一時退避にはstashコマンド。緊急時に多用するコマンドなので、ぜひ覚えておいてください!また退避から、復旧までに使うコマンドは以下の通りです。

  • git stash save メッセージ
  • git stash list
  • git stash apply 復旧したいstash名
  • git stash drop 削除したいstash名

保存し、確認し、復旧する。(と、あとは片付け)ぜひ覚えておいてください!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

sato

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!