git stash
未コミットの変更を一時的に退避(スタッシュ)します。作業を中断してブランチを切り替えたいときに使います。
構文
git stash <subcommand> [options] git stash は、現在の未コミットの変更を一時的に退避させるコマンドです。急な割り込み作業やブランチ切り替え時に、変更を保存したままにできます。
基本的な使い方
# 変更を退避する(ステージング中の変更も含む)
git stash
# メッセージ付きで退避する(後から識別しやすい)
git stash push -m "ログイン機能の途中"
# 退避一覧を確認する
git stash list
# 出力例:
# stash@{0}: On main: ログイン機能の途中
# stash@{1}: WIP on feature/login: a1b2c3d README 更新
スタッシュを復元する
# 最新のスタッシュを適用してリストから削除する
git stash pop
# 特定のスタッシュを指定して適用する
git stash pop stash@{1}
# 適用してもリストに残す(後でもう一度使いたいとき)
git stash apply stash@{0}
スタッシュを削除する
# 特定のスタッシュを削除する
git stash drop stash@{0}
# すべてのスタッシュを削除する
git stash clear
未追跡ファイルも退避する
# 新しく作ったファイル(未追跡)も含めて退避する
git stash push --include-untracked
# 無視ファイルも含めてすべて退避する
git stash push --all
よくある使いどころ:ブランチを切り替える
# 作業中にブランチを切り替えなければならなくなった
git stash push -m "機能A の途中"
# 別ブランチに切り替えて緊急作業
git switch hotfix/urgent-bug
# ... 修正 ...
git commit -m "緊急バグを修正"
# 元のブランチに戻って作業を再開
git switch feature/a
git stash pop
スタッシュの内容を確認する
# スタッシュの差分を確認する
git stash show stash@{0}
# 詳細な差分を確認する
git stash show -p stash@{0}