💬

[ Git ] git stash のありがたみを知ってみる

2025/02/04に公開

git stash ...?

他者がリモートにプッシュしているものを取り込まないと...
👤「でも、今はステージングしたくないファイル触ってるんだよな...消すしか...」
そんな時に git stash です

作業中の変更を一時的に保存しておける「引き出し」のようなもの
コミットせずに作業内容を保存できる便利な機能

作業内容を保存する

git stash

または、メッセージをつけて保存

git stash save "作業メモ"

保存した作業を確認する

git stash list

表示例

stash@{0}: WIP on main: abc1234 前回のコミットメッセージ
stash@{1}: On main: 作業メモ

保存した作業を復元する

最新の作業を復元

git stash pop

特定の作業を復元

git stash pop stash@{1}

便利な使い方

変更内容を確認する

# 最新のstashの内容を確認
git stash show

# 詳しい差分を見る
git stash show -p

特定の変更だけを復元する

# stashを削除せずに適用
git stash apply

stashを削除する

# 特定のstashを削除
git stash drop stash@{1}

# すべてのstashを削除
git stash clear

お気をつけて

未追跡のファイル(新規作成したファイル)は対象外

  • git stash -uで未追跡ファイルも含めて保存できます

stash popでコンフリクトが発生した場合

  • コンフリクトを解決してからgit stash dropを実行する必要があります

stashは複数保存できますが、整理が必要

  • たくさん貯めすぎると何が何だか分からなくなります
  • 適切なメッセージをつけることをお勧めします

ラジオネーム「gitに恋している」さんからの質問 📻

stashした内容を間違えて削除してしまいました

git fsck --unreachableで削除したstashを見つけられる可能性があります。
ただし、確実な復元は難しいので注意が必要です。

特定のファイルだけstashしたいです

git stash push path/to/fileで特定のファイルだけをstashできます。

stashにメッセージをつけ忘れました

後からメッセージを変更することはできませんが、
次回からはメッセージをつけることをお勧めします。

Discussion