💬
[ Git ] git stash のありがたみを知ってみる
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