Git Stash と一時的変更
はじめに
git stash は未コミット作業を「棚上げ」し、タスク切替・更新取得・緊急修正を未完成コードを commit せずに実行できるようにする。
何を保存するか
既定: 変更済み追跡ファイル + ステージ済み。オプションで未追跡 / 無視ファイルを含められる。
基本
bash
git stash push -m "WIP: form validation"
git stash list例:
stash@{0}: On feature/form: WIP: form validation復元
bash
git stash apply stash@{0} # stash を保持
git stash pop # 適用して削除未追跡ファイル込み
bash
git stash push -u -m "WIP: add config prototype"無視ファイルも:
bash
git stash push -a -m "WIP: full env"部分 (インタラクティブ)
bash
git stash push -p -m "WIP: selected changes"差分表示
bash
git stash show stash@{1}
git stash show -p stash@{1}破棄
bash
git stash drop stash@{2}
git stash clear別ブランチへ適用
bash
git checkout feature/new-ui
git stash apply stash@{0}Stash からブランチ生成
bash
git stash branch feature/resume stash@{0}パターン
| シナリオ | コマンド |
|---|---|
| Pull して続行 | git stash push -m "WIP" && git pull && git stash pop |
| main で Hotfix | Stash → switch → 修正 → 戻る → pop |
| ビルド用クリーン | ノイズを stash |
避けるべき使用
- 長期保存(WIP ブランチ commit の方が安全)
- 共有用途(ブランチ利用)
- 大量バイナリ(オブジェクト膨張)
代替
| ニーズ | 代替 |
|---|---|
| 安全チェックポイント | 一時ブランチ commit |
| 実験 | feature/spike-* |
| すぐ破棄 | git restore |
トラブルシュート
| 問題 | 対処 |
|---|---|
| 適用時衝突 | 解決し git add (既に適用済) |
| pop 後喪失 | git fsck --lost-found 試行 |
| 重要未追跡を誤 stash | 以後はブランチ運用 |
まとめ
Stash は短期中断向け。永続進捗には明示 commit を優先する。
次へ
git-reset-revert-and-checkout-explained.mdgit-conflict-resolution-strategies.md
主要コマンド
bash
git stash push -m "msg"
git stash list
git stash show -p stash@{n}
git stash pop
git stash branch <name> stash@{n}