テック技報最新号へ →
コード

Git: git stash push --keep-index -m / --staged で一部だけ退避して作業を切り替える

--keep-index はステージ済みの変更を作業ツリーに残したまま退避し、-m で何の退避かメモを付けられる。ステージ済みの分だけ退避したいなら --staged。

@TeaDrivenDera · 投稿 2026-10-04
#git#stash

どんな時に使う?

  • 一部だけコミット/テストしたいので、それ以外の変更を一時的にどけたい
  • 途中の作業を中途半端なコミットにせず、別ブランチの作業に切り替えたい

コマンド

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)。

出典

X の元の投稿を開く