ブランチを切り替えたいのに「変更がコミットされていません」と怒られる…。
今やっている作業を一旦保存して、別のブランチで急ぎの修正をしたい…。
そんな時に使えるのが git stash(ギット スタッシュ) コマンドです。

git stashは「作業の一時保存」ができるコマンドです。引き出しに作業を一時的にしまうイメージですね!
git stashとは?
git stashは、現在の作業内容を一時的に退避(保存)するコマンドです。
- git stashが必要な場面
-
- ブランチを切り替えたいけど、今の変更をコミットしたくない
- 急ぎのバグ修正が入ったので、今の作業を中断したい
- 別の機能を先に確認したいけど、作業途中のファイルがある
普通にブランチを切り替えようとすると、未コミットの変更があるとエラーになります。
$ git checkout main
error: Your local changes to the following files would be overwritten by checkout
こんなエラーが出たことありませんか? git stashを使えば、このエラーを回避できます。
git stashの基本的な使い方
ステップ1:作業を一時保存する
git stash
これだけで、変更中のファイルが全て一時保存されます。ワーキングディレクトリはきれいな状態に戻ります。
メッセージをつけて保存する場合:
git stash save "ログイン機能の途中"

メッセージをつけておくと、後で「何の作業を保存したか」がわかりやすくなります!
ステップ2:別のブランチで作業する
stashした後は自由にブランチを切り替えられます。
# mainブランチに切り替え
git checkout main
# 急ぎの修正をする
# ...修正作業...
# コミットしてプッシュ
git add .
git commit -m "緊急バグ修正"
git push origin main
ステップ3:元のブランチに戻って作業を復元する
# 元のブランチに戻る
git checkout feature-login
# 保存しておいた作業を復元
git stash pop
git stash pop で、一時保存した作業内容が復元され、stashリストからも削除されます。
git stashのよく使うコマンド一覧
| コマンド | 説明 | よく使う場面 |
|---|---|---|
| git stash | 作業を一時保存 | ブランチ切替前 |
| git stash pop | 保存した作業を復元(stashから削除) | 元のブランチに戻った時 |
| git stash apply | 保存した作業を復元(stashに残す) | 複数ブランチで同じ変更を使いたい時 |
| git stash list | 保存した作業の一覧を表示 | 何を保存したか確認したい時 |
| git stash drop | 指定したstashを削除 | 不要になったstashを消す時 |
| git stash clear | stashを全て削除 | 全部不要になった時 |
git stash list(一覧表示)
$ git stash list
stash@{0}: WIP on feature-login: abc1234 ログイン画面作成中
stash@{1}: On main: def5678 デザイン調整の途中
番号(stash@{0}など)で個別に操作できます。
git stash apply(復元するが削除しない)
# 最新のstashを復元(stashリストに残る)
git stash apply
# 特定のstashを復元
git stash apply stash@{1}
popとの違いは、stashリストに残るかどうかです。同じ変更を複数のブランチに適用したい場合は apply が便利です。
VSCodeでgit stashを使う方法
コマンドを打たなくても、VSCodeのGUI操作でstashが使えます。
ソース管理を開く
左側のサイドバーで「ソース管理」アイコン(分岐のマーク)をクリックします。
stashに保存する
ソース管理パネルの「…」メニューから「**Stash**」→「**Stash(未追跡ファイルを含む)**」を選択します。
stashから復元する
「…」メニューから「**Stash**」→「**Apply Stash**」または「**Pop Stash**」を選択します。

GUIが苦手な方はターミナルで、コマンドが苦手な方はGUIで。好きな方を使いましょう!
git stashでよくあるトラブルと対処法
新規ファイルがstashされない
git stashは追跡されているファイルのみを保存します。新しく作ったファイル(untracked files)は保存されません。
対処法:
# 新規ファイルも含めてstash
git stash -u
-uオプション(--include-untracked)をつけると、新規ファイルも一緒にstashされます。
stash popでコンフリクトが発生した
stashした後にブランチで同じファイルが変更されていると、復元時にコンフリクト(競合)が発生することがあります。
対処法:
1. コンフリクトが発生したファイルを開く
2. <<<<<<< Updated upstream と >>>>>>> Stashed changes の間を手動で修正
3. 修正後に git add してコンフリクトを解決
Git操作をもっとスムーズにしたいなら
git stashを覚えると、ブランチ切り替えがスムーズになります。
他にもGitの便利な使い方を知りたい方は、以下の記事もチェックしてください。
- 関連記事
-
- [VSCodeでGitHubブランチを削除する方法](/blog/1652/)
- [git pullでブランチが最新にならない時の対処法](/blog/2220/)
- [VSCodeのGitHubコミット方法やpush取り消し方法](/blog/2033/)
- [GitリポジトリをVSCodeにクローンする方法](/blog/233/)
しかし、Gitの操作だけでなくプログラミング全体を体系的に学びたいなら、スクールの活用も検討してみてください。
Git・プログラミングを体系的に学ぶなら
独学で限界を感じていませんか?プロのカリキュラムなら最短でスキルが身につきます。
※無料体験・無料カウンセリングあり
まとめ:git stashで作業の中断・再開を自由自在に
今回は、git stashの使い方を解説しました。
- 覚えるべきコマンド3つ
-
- `git stash` → 作業を一時保存
- `git stash pop` → 保存した作業を復元
- `git stash list` → 保存した一覧を確認
git stashを使いこなせば、複数の作業を並行して進めることができるようになります。
「急な修正依頼が来た!」というときも慌てずに対処できますよ!

コメント