Git: git stash push --keep-index -m / --staged で一部だけ退避して作業を切り替える
--keep-index はステージ済みの変更を作業ツリーに残したまま退避し、-m で何の退避かメモを付けられる。ステージ済みの分だけ退避したいなら --staged。
どんな時に使う?
- 一部だけコミット/テストしたいので、それ以外の変更を一時的にどけたい
- 途中の作業を中途半端なコミットにせず、別ブランチの作業に切り替えたい
コマンド
bash
# ステージ済みは残し、それ以外を退避(メモ付き)
git stash push --keep-index -m "wip login page"
# ステージ済みの変更"だけ"を退避(Git 2.35+)
git stash push --staged -m "only staged"
# 一覧と復元
git stash list
git stash pop # または git stash apply stash@{1}注意点
--keep-indexは「ステージ済みを除いて退避」ではなく、ステージ済みの変更もstashに含めたうえで作業ツリーに残す。そのため pop 時に同じ変更が重なってコンフリクトすることがある。ステージ分のコミット後に pop すると安全。- 未追跡ファイルも退避するなら
-u(--include-untracked)。