【Git】git stashの使い方|作業の退避・復元・削除コマンドを徹底解説

【Git】git stashの使い方|作業の退避・復元・削除コマンドを徹底解説

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:2,417

作業中の変更を一時的に退避できる「git stash」コマンドの基本的な使い方から、特定ファイルの退避、退避した作業の復元や削除、そしてよくあるトラブルシューティングまで徹底解説します。Gitでの作業効率を上げたい方必見です。

Gitユーザにお勧めの本 ↗

初心者向け

いちばんやさしいGit&GitHubの教本 第3版 人気講師が教えるバージョン管理&共有入門 「いちばんやさしい教本」シリーズ

難易度
実用性
読みやすさ

とにかく挫折しない丁寧な解説。チーム開発での基本的な流れを確実にマスターできます。

改訂2版 わかばちゃんと学ぶ Git使い方入門

難易度
実用性
読みやすさ

漫画形式で視覚的にイメージしやすい。Git特有の難しい用語も、物語を通して自然に理解できます。

独習Git

難易度
実用性
読みやすさ

コマンドの裏側で何が起きているかを丁寧に解説。プロとしてGitを使いこなすためのバイブルです。

GitGit [ギット]ソースコードの変更履歴を管理する分散型バージョン管理システムを使って開発を進めていると、「今の作業はまだコミットしたくないけれど、急遽別のブランチに切り替えて作業する必要が出た」という場面に遭遇することがよくあります。そんな時に大活躍するのが git stash コマンドです。

git stash を使えば、コミット前の作業中の変更を一時的に退避させ、作業ディレクトリをクリーンな状態に戻すことができます。

本記事では、git stash の基本から、実務で役立つ便利なオプションまで、具体的なコマンド例とともに解説します。

1. git stash とは?(作業の一時退避)

git stash は、現在の作業ディレクトリとステージングエリアにある変更内容を一時的に別の場所(スタッシュ)に保存するコマンドです。

スタッシュに退避させることで、作業途中の状態を失うことなく、別のブランチにチェックアウトしたり、git pull で最新のコードを取得したりすることが可能になります。急な割り込みタスクが発生した際などに非常に重宝します。

2. git stash の基本的な使い方(退避・確認・復元)

まずは、日常的によく使う基本的なコマンドの流れを見ていきましょう。

変更を一時退避する(git stash / push)

作業中のファイルを一時的に退避するには、以下のコマンドを実行します。

作業を退避する
git stash

または、最近のGitバージョンで推奨されている push サブコマンドを使います。

Terminal window
git stash push

このコマンドを実行すると、変更が退避され、追跡対象ファイルの作業ツリーとステージングエリアは直前のコミット(HEAD)の状態に戻ります。

退避したスタッシュの一覧を確認する(list)

これまでに退避した作業(スタッシュ)の一覧を確認するには、以下のコマンドを使います。

スタッシュ一覧を表示する
git stash list
出力例
stash@{0}: WIP on main: 1a2b3c4 Add feature A
stash@{1}: WIP on develop: 5d6e7f8 Update config

最新の退避作業は stash@{0} という名前で保存され、過去のものは stash@{1}, stash@{2} と数字が大きくなっていきます。

退避した作業を復元する(pop / apply)

退避した作業を現在のブランチに戻すには、主に2つのコマンドがあります。用途に応じて使い分けましょう。

① 復元して、適用に成功したらスタッシュから削除する(git stash pop)

最新のスタッシュを復元し、一覧から削除する
git stash pop

pop は、最新のスタッシュ(stash@{0})を作業ディレクトリに適用し、適用に成功するとそのスタッシュを一覧から削除します。

【注意】コンフリクト(競合)が発生した場合
pop 実行時に現在の作業ツリーの変更とコンフリクトが発生すると、適用は中断され、スタッシュは自動削除されずに一覧に残ります。その場合は、手動でコンフリクトを解消した後に git stash drop で対象のスタッシュを明示的に削除する必要があります。

② 復元するがスタッシュは残す(git stash apply)

最新のスタッシュを復元し、一覧には残す
git stash apply

apply は、作業ディレクトリに変更を適用しますが、スタッシュ自体は一覧に保持したままにします。同じ変更を複数のブランチに適用したい場合などに便利です。

特定のスタッシュを復元したい場合は、git stash pop stash@{1}git stash apply stash@{1} のように指定することも可能です。

3. 応用編:git stashの実務で役立つ便利な使い方

基本的な操作に加えて、知っておくとさらに便利な git stash の使い方をご紹介します。

メッセージを付けて退避する(-mオプション)

デフォルトのスタッシュ名では、後から見た時に何の作業だったか分かりにくくなることがあります。その場合、メッセージを付けて退避することができます。

メッセージ付きで退避する
git stash push -m "〇〇機能の作業途中"

これにより、git stash list を実行した際に、指定したメッセージが表示されるため管理が楽になります。

新規作成ファイル(未追跡ファイル)も退避する(-u / -aオプション)

デフォルトの git stash では、Gitの追跡対象となっているファイルの変更が退避されます。未追跡の新規ファイル(Untracked files)は対象になりません。 新しく作成した未追跡のファイル(Untracked files)も含めて退避したい場合は、-u(または --include-untracked)オプションを使います。

新規ファイルも含めて退避する
git stash -u

または

Terminal window
git stash push -u

補足:未追跡ファイルに加えて、.gitignore で無視されているファイルも含めてすべて退避したい場合は、-a(または --all)オプションを使用します(例: git stash -a または git stash push -a)。

特定のファイルだけを指定して退避する

作業ディレクトリ全体ではなく、特定のファイルだけを退避したい場合は、ファイルパスを指定して実行します。

特定のファイルのみ退避する
git stash push -m "〇〇ファイルの変更を退避" 該当ファイルのパス

特定のファイルだけをスタッシュから復元する

スタッシュに保存された内容から、一部のファイルだけを選んで復元したい場合は、git checkout コマンドを使用します。

特定のファイルのみ復元する
git checkout stash@{0} -- 該当ファイルのパス

4. 退避した作業(スタッシュ)の削除

不要になったスタッシュは削除して整理しましょう。

特定のスタッシュを削除する(git stash drop)

特定のスタッシュを削除する
git stash drop stash@{1}

すべてのスタッシュを削除する(git stash clear)

スタッシュを全てクリアする
git stash clear

この操作を行うと、保存されていたすべてのスタッシュが一括で削除されるため、実行する際は十分にご注意ください。

5. まとめ:git stashで作業の退避と復元を効率化

git stash を使いこなすことで、開発中の「ちょっと待って」に柔軟に対応できるようになります。

  • git stash : 変更を一時退避
  • git stash list : 退避一覧の確認
  • git stash pop : 退避を復元して削除
  • git stash push -m "..." : メッセージ付きで退避
  • git stash -u : 新規ファイルも含めて退避

これらの基本コマンドを覚えておけば、急なブランチの切り替えや最新コードの取得も怖くありません。ぜひ日々の開発に取り入れてみてください。

関連記事

Gitの基本操作やその他の便利なコマンドについて学びたい方は、以下のまとめ記事もぜひご覧ください。

Git入門|基本操作・コマンド解説・トラブル対処法まとめ
ITナレッジライフ

Git入門|基本操作・コマンド解説・トラブル対処法まとめ

Gitの学習に必要な情報を網羅的にまとめた完全ガイドです。Gitの基本概念や初期設定から、ステージングなどの基本操作、ブランチ管理、コンフリクト解消、よくあるエラーのトラブル対処法、VS Code連携まで目的別に整理。日々の開発で迷った時のリファレンスとしてご活用ください。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Gitユーザにお勧めの本 ↗

初心者向け

いちばんやさしいGit&GitHubの教本 第3版 人気講師が教えるバージョン管理&共有入門 「いちばんやさしい教本」シリーズ

難易度
実用性
読みやすさ

とにかく挫折しない丁寧な解説。チーム開発での基本的な流れを確実にマスターできます。

人気記事


記事を評価

Thanks!
目次
Scroll to Top