スライドショー

変更を一時的に退避しよう!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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

sato

sato

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説