git stash コマンドは、作業ツリーやステージングエリアにある変更を一時的に退避して、作業ディレクトリをクリーンな状態に戻すためのコマンドです。
作業途中で別のブランチに切り替えたいときや、未完了の変更を一時的に保存したいときに利用されます。
構文(Syntax)
git stash [オプション]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 作業中の変更を stash に保存 | git stash |
save "メッセージ" | メッセージ付きで stash | git stash save "WIP: fix bug" |
-u / --include-untracked | 未追跡ファイルも stash | git stash -u |
-a / --all | 無視されているファイルも含めて stash | git stash -a |
list | stash の一覧を表示 | git stash list |
show [stash@{n}] | 指定した stash の内容を表示 | git stash show -p stash@{0} |
apply [stash@{n}] | 指定した stash を復元(stash は保持される) | git stash apply stash@{0} |
pop [stash@{n}] | 指定した stash を復元して削除 | git stash pop stash@{0} |
drop [stash@{n}] | 指定した stash を削除 | git stash drop stash@{0} |
clear | すべての stash を削除 | git stash clear |
実行例
作業中の変更を stash する
git stash
出力例:
Saved working directory and index state WIP on main: 1a2b3c4 Update README
メッセージ付きで stash
git stash save "WIP: add login feature"
未追跡ファイルも stash
git stash -u
stash の一覧を確認
git stash list
出力例:
stash@{0}: WIP on main: 1a2b3c4 Update README
stash@{1}: WIP on develop: 9z8y7x6 Add API endpoint
特定の stash を適用(stash は残る)
git stash apply stash@{1}
特定の stash を適用して削除
git stash pop stash@{0}
stash を削除
git stash drop stash@{0}
stash をすべて削除
git stash clear
エラー例(stash が空)
git stash pop
出力例:
No stash entries found.
関連コマンド
git commit: 変更を履歴に確定する。git reset: 変更を取り消す。git checkout/git switch: ブランチを切り替える。
備考
stashは作業途中の変更を「隠す」イメージ。applyは stash を残し、popは復元して stash を削除する違いがあります。- 重要な変更を消してしまわないように、必要なら
git stash show -pで中身を確認してから操作すると安全です。
参考
- Git公式ドキュメント: https://git-scm.com/docs/git-stash

コメント