git stash popとは?初心者でもわかる使い方と実務での活用法
こんにちは、とまだです。
開発中に「急な別タスクで今の作業を中断しなければならない」という経験、ありませんか?
まだコミットできる状態じゃないけど、今の変更を残しておきたい。
そんなときに便利なのがgit stashです。
今回は、一時保管した変更を取り出すgit stash popについて解説します。
git stash popとは?
git stash popは、一時保管していた変更を現在のブランチに適用し、stashから削除するコマンドです。
料理に例えると、冷蔵庫に一時保管していた食材を取り出して使うようなものです。
使った後は冷蔵庫から消えるので、スッキリ整理できます。
なぜgit stash popが必要なのか
開発現場では、こんな場面がよくあります。
- 機能開発中に緊急のバグ修正依頼が来た
- レビュー指摘の修正中に別のPRの確認を頼まれた
- 実験的な変更を試したいが、今の作業を失いたくない
コミットするほどでもない中途半端な状態。
そんなときにgit stashで一時保管し、用事が済んだらgit stash popで作業を再開できるのです。
基本的な使い方
最もシンプルな使い方から見ていきましょう。
変更を一時保管して取り出す
# 変更を一時保管
git stash
# 別の作業をする...
# 保管した変更を取り出す
git stash pop
たったこれだけです。
git stash popを実行すると、最新のstashが適用されます。
stashの中身を確認する
複数のstashがある場合は、まず確認しましょう。
# stashの一覧を表示
git stash list
# 結果例
stash@{0}: WIP on feature: ヘッダーのスタイル調整
stash@{1}: WIP on feature: ログイン機能の実装途中
stash@{2}: WIP on main: READMEの更新
最新のstashがstash@{0}です。
番号が若いほど新しいstashになります。
特定のstashを取り出す
最新以外のstashを取り出したい場合は、番号を指定します。
# 2番目のstash(ログイン機能)を取り出す
git stash pop stash@{1}
指定したstashが適用され、リストから削除されます。
実務でよく使うシーン
現場でよく遭遇する具体的な使用例を紹介します。
シーン1:緊急対応での作業切り替え
# feature/user-profileブランチで作業中
# まだコミットできない状態
# 緊急バグの連絡が!
git stash save "ユーザープロフィール画面の作業途中"
# バグ修正用のブランチに切り替え
git checkout -b hotfix/critical-bug
# バグ修正してマージ完了
# 元のブランチに戻る
git checkout feature/user-profile
# 作業を再開
git stash pop
メッセージ付きでstashすると、後で何の作業だったか分かりやすくなります。
シーン2:実験的な変更を試す
# 現在の実装を一時保管
git stash
# 別のアプローチを試してみる
# ...実験的なコードを書く...
# やっぱり元の方が良かった
git checkout .
# 元の実装を復元
git stash pop
新しいアプローチを試すときに、元のコードを安全に保管できます。
シーン3:レビュー対応中の割り込み
# PRのレビュー指摘を修正中
git stash
# 別のPRのレビューを依頼される
git checkout other-feature-branch
# レビュー完了
# 元の作業に戻る
git checkout my-feature-branch
git stash pop
レビュー対応の途中でも、スムーズに作業を切り替えられます。
git stash popとgit stash applyの違い
よく混同されるgit stash applyとの違いを理解しておきましょう。
git stash pop
- stashを適用する
- 適用後、stashから削除される
- 使い終わったstashは自動的に整理される
git stash apply
- stashを適用する
- 適用後もstashに残る
- 同じstashを複数回使いたいときに便利
# applyの例:stashを残したまま適用
git stash apply stash@{0}
# 同じstashをもう一度使える
git stash apply stash@{0}
# 不要になったら手動で削除
git stash drop stash@{0}
基本的にはpopを使い、特別な理由があるときだけapplyを使うのがおすすめです。
よくあるエラーと対処法
コンフリクトが発生した場合
stashを適用するときに、現在のコードと競合することがあります。
git stash pop
# エラー: 自動マージに失敗しました
対処法は通常のコンフリクト解決と同じです。
- コンフリクトしたファイルを開く
- 競合箇所を手動で修正
git addでステージング- 作業を続ける
コンフリクトが発生した場合、stashは自動的に削除されないので安心してください。
ワーキングディレクトリがクリーンでない場合
git stash pop
# エラー: ローカルの変更により、stashの適用ができません
現在のディレクトリに未コミットの変更がある場合のエラーです。
対処法:
# 現在の変更も一時保管
git stash
# 元のstashを適用
git stash pop stash@{1}
# 最新の変更を適用
git stash pop
stashが見つからない場合
git stash pop stash@{5}
# エラー: stash@{5}は有効なstashではありません
存在しない番号を指定した場合のエラーです。
git stash listで確認してから実行しましょう。
実践的なTips
1. わかりやすい名前を付ける
# 悪い例
git stash
# 良い例
git stash save "ログイン画面のバリデーション追加途中"
後で見返したときに、何の作業だったかすぐ分かります。
2. stashの中身を確認してから適用
# stashの変更内容を確認
git stash show -p stash@{0}
# 問題なければ適用
git stash pop stash@{0}
予期しない変更を適用してしまうリスクを減らせます。
3. 定期的にstashを整理
# 不要なstashを削除
git stash drop stash@{3}
# すべてのstashを削除(注意!)
git stash clear
古いstashが溜まると管理が大変になります。
定期的に整理しましょう。
まとめ
git stash popは、一時保管した変更を取り出して削除する便利なコマンドです。
主なポイント:
- 最新のstashを適用して削除する
- 番号指定で特定のstashを取り出せる
- コンフリクトが発生してもstashは残る
applyとの使い分けを理解する
緊急対応や実験的な変更など、現場では頻繁に使うコマンドです。
基本的な使い方をマスターして、効率的な開発フローを実現しましょう。
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →