開発中に「作業途中だけど別ブランチに切り替えたい…」という場面はよくあります。
そんなときに便利なのが Git stash です。
この記事では、Git stashの基本から実務での使い方・比較・事故復旧までまとめて解説します。
Git stashとは#
Git stashとは、現在の変更内容を一時的に退避できる機能です。
👉 コミットせずに作業状態を保存できる
図解:stashのワークフロー#

作業中(変更あり)
↓
git stash
↓
作業ディレクトリがクリーン
↓
別ブランチへ移動
↓
git stash apply
↓
作業再開基本の使い方#
変更を退避#
git stash一覧確認#
git stash list復元#
git stash apply復元+削除#
git stash popstash と commit の違い#
ここがかなり重要です。
| 項目 | stash | commit |
|---|---|---|
| 目的 | 一時退避 | 永続保存 |
| 履歴に残る | ❌ | ✅ |
| チーム共有 | ❌ | ✅ |
| 安全性 | 低い | 高い |
使い分け#
👉 stashを使うべき場面
- 作業途中で一時退避したい
👉 commitすべき場面
- 後から見返す必要がある
- チームで共有する
stash と git worktree の違い#
git worktree と比較すると理解が深まります。
| 項目 | stash | worktree |
|---|---|---|
| 用途 | 一時退避 | 並行作業 |
| 作業状態 | 消える | 維持される |
| 安全性 | やや低い | 高い |
worktreeの例#
git worktree add ../hotfix main👉 別ディレクトリで同時作業可能
どちらを使うべき?#
👉 stash
- 一瞬だけ退避したいとき
👉 worktree
- 並行開発したいとき
特定のstashを扱う#
git stash apply stash@{1}名前を付ける#
git stash push -m "ログイン修正途中"ファイルの扱い#
未追跡ファイル含む#
git stash -u無視ファイル含む#
git stash -astashの削除#
git stash drop stash@{0}git stash clear⚠️ 全削除は危険
よくあるミス#
applyしても消えない#
👉 applyは「復元のみ」
コンフリクト#
👉 通常のマージと同じ
stash事故からの復旧(reflog)#
ここはかなり重要です。
消してしまった場合#
git reflogstashの履歴を探す#
stash@{0}: WIP on main...復元#
git stash apply <hash>👉 完全復元できる可能性あり
実務での使いどころ#
緊急対応#
git stash
git checkout main一時的な退避#
👉 レビュー前など
stashを使う際の注意点#
長期間放置しない#
👉 忘れて事故る
stashはバックアップではない#
👉 消える前提で使う
NGな使い方#
git stash
# 放置👉 これが一番危険
まとめ#
Git stashは
👉 変更を一時的に退避する便利ツール
重要ポイント#
- stashは一時保存
- commitは正式保存
- worktreeは並行作業
👉 結論:stashは短時間の退避に限定して使うのがベスト










