git stash push -m で特定ファイルだけを一時退避する方法
問題
ブランチで複数のファイルを同時に修正しているとき、一部のファイルだけを一時的に退避したいことがあります。git stashを実行すると、変更したファイルがすべてスタッシュされてしまいます。
解決方法
git stash pushにファイルパスを指定すれば、特定のファイルだけをスタッシュできます。
# 特定のファイルだけをスタッシュ
git stash push -m "ログインフォーム修正中" -- src/components/LoginForm.tsx
# 複数ファイルも可能
git stash push -m "APIリファクタリング" -- src/api/user.ts src/api/auth.ts
# ディレクトリ単位も対応
git stash push -m "スタイル作業" -- src/styles/
以前はgit stash saveを使っていましたが、こちらはdeprecatedになっています。pushの方がファイル指定もでき、より柔軟です。
スタッシュの確認と復元は同じ方法です。
# 一覧確認
git stash list
# stash@{0}: On feature/login: ログインフォーム修正中
# stash@{1}: On feature/login: APIリファクタリング
# 復元(スタッシュを残す)
git stash apply stash@{0}
# 復元して削除
git stash pop stash@{0}
ポイント
git stash push -m "メッセージ" -- ファイルパスで特定ファイルだけスタッシュ可能ですgit stash saveはdeprecated、pushを使いましょう-mメッセージを入れないと、後でどのスタッシュが何か分からなくなりますapplyはスタッシュを残し、popは復元と同時に削除します