取り消し

git stash

未コミットの変更を一時的に退避(スタッシュ)します。作業を中断してブランチを切り替えたいときに使います。

構文 git stash <subcommand> [options]

オプション

フラグ 説明
push 現在の変更をスタッシュに保存します(引数なしの `git stash` と同じ)。-m でメッセージを付けられます。
pop 最新のスタッシュを適用し、スタッシュリストから削除します。
apply 指定したスタッシュを適用しますが、スタッシュリストには残します。
list 保存されているスタッシュの一覧を表示します。
drop 指定したスタッシュをリストから削除します(適用せずに捨てる)。
--include-untracked 未追跡ファイル(git add していないファイル)もスタッシュに含めます。

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}