git stash

コミットしていない変更を一時的にしまって、作業フォルダをきれいな状態に戻す。

実行前の状態

README.md を書き換えている途中で、別のブランチに移って確認したくなった場面です。変更をコミットするほどには、まだ仕上がっていません。変更が残ったままだと、ブランチを移れないことがあります。

この状態を手元で作るなら、次の順に打ちます。

ターミナル

git init -q -b main hello
cd hello
echo "# hello" > README.md
git add README.md
git commit -q -m "README を作る"
echo "書きかけ" >> README.md
git status -s
 M README.md

最小の例と結果

オプションなしで打つだけです。

ターミナル

git stash
Saved working directory and index state WIP on main: a1b2c3d README を作る

WIP on main は、main ブランチで作業中だった変更をしまったという意味です。番号は、そのときの最新のコミットです。

成功の確認

作業フォルダがきれいになり、しまった物が一覧に出ていれば成功です。

ターミナル

git status -s
git stash list
stash@{0}: WIP on main: a1b2c3d README を作る

git status -s に何も出ないのは、変更が無い状態という意味です。stash@{0} は、しまった物の名前です。しまった物が複数あると、新しい物から {0} {1} と番号が付きます。

構文と主要オプション

書き方すること
git stash変更をしまう。新しく作ったファイルは、git add 済みの物だけしまう
git stash -u新しく作ったファイルも、まとめてしまう
git stash listしまった物の一覧を見る
git stash pop一番新しい物を戻して、一覧から消す
git stash apply一番新しい物を戻す。一覧には残す

失敗時の戻し方

しまった物を戻す

git stash pop を打ちます。戻した物は一覧から消えます。戻した先で衝突すると、一覧から消えずに残るので、直したあとに git stash drop で消します。

一覧に残したまま戻したいとき

git stash apply を使います。別のブランチに同じ変更を戻したいときに向いています。

しまった物を捨てる

git stash drop は、一番新しい物を一覧から消します。消した物は、通常は戻せません。要るかどうか迷うときは、先に git stash show -p で中身を見ます。

新しいファイルがしまわれていないとき

オプションなしの git stash は、まだ git add していない新しいファイルをしまいません。ブランチを移ったあとも、そのファイルは残ります。しまいたいときは git stash -u を打ちます。

よくある疑問

何本もしまうと、どれがどれか分かりません

git stash push -m "ログイン画面の途中" のようにメッセージを付けると、一覧にその文が出ます。戻すときは git stash pop stash@{1} のように名前を書きます。

しまった物は、いつまで残りますか

自分で消すまで残ります。ただし、手元のリポジトリの中にだけあります。push では相手に届きません。

別のフォルダで続けたいときも stash ですか

すぐ戻る寄り道なら stash で足ります。長く並べて作業したいなら、git worktree で別のフォルダを開きます。

確かめた Git の版 2.53.0確認日 2026年10月20日正本は Git 公式マニュアル (英語)

Git コマンド辞典の索引へ戻る