はじめに
コミット前の変更を一時的に退避させるコマンド git stash
の使い方を備忘録としてまとめます。
基本の使い方
スタックに退避する
$ git stash
$ git stash save
オプション |
意味 |
なし |
変更をスタックに退避する(untracked、ignoredファイルは除く) |
-u |
(--include-untracked) untrackedファイルも一緒に退避する |
-a |
(--all) untrackedファイルに加えて、ignoredファイルも一緒に退避する |
-k |
(--keep-index) ステージ済みの変更は退避しない |
--patch |
退避したい変更を対話的に選択する |
スタックに退避した変更を再適用する
$ git stash apply
$ git stash apply stash@{0} # stash@{0}は直近に退避した変更
オプション |
意味 |
なし |
stash@{n}を指定しなければ、直近に退避された変更を再適用する。ステージ状態はリセットされる |
--index |
ステージ状態も含めて再適用する |
スタックに退避した作業を削除する
$ git stash drop
$ git stash drop stash@{0}
スタックに退避した変更を再適用し、スタックから削除する
$ git stash pop
$ git stash pop stash@{0}
その他の使い方
作業ディレクトリの削除
# 要注意・要オプション
$ git clean
# こちらの方が安全
$ git stash --a # 一旦すべてを退避させる
スタックに退避した変更内容を見る
$ git stash show
$ git stash show stash@{0}
オプション |
意味 |
なし |
直近に退避した変更内容を見る |
-p |
変更内容を詳しく見る |
メッセ―ジを追加して退避する
スタックの一覧を見る
スタックを空にする
スタックに退避した変更内容からブランチを作成する
- 新しいブランチを作成する
- 作業をスタックに退避したときのコミットをチェックアウトする
- スタックにある作業を再適用する
- 成功すればスタックからその作業を削除する
$ git stash branch "[作成するブランチ名]"
git stash
の実行前後に使うコマンド
作業ディレクトリの状態を確認する
オプション |
意味 |
なし |
デフォルトでallが対象。作業ディレクトリのファイルとステージングの状態を表示する |
-s |
(--short) ショートフォーマットで表示する |
おわりに
退避する際はgit stash -u
git stash -a
とオプション付きで覚えた方が安心して使えそうです
参考