Git のスタッシュ
Git のスタッシュとは?
Git の「スタッシュ」(stash) とは、コミットせずに現在の作業ディレクトリ変更を一旦取り置くことです。
スタッシュを行うと、作業ディレクトリの変更を退避して保存した上で、作業ディレクトリの内容は最新のコミット直後の状態まで戻されます。
Git の変更をスタッシュする方法
git stashコマンドを実行することで、作業ディレクトリの内容をとりおき (退避させ)、作業ディレクトリを最新のコミットの内容に書き換えることができます。
git stash
メッセージ (コメント) を付けてスタッシュするには、次のようにします。
git stash save "ここにメッセージを書く"
Git のスタッシュの一覧表示
現在保存されているスタッシュを一覧表示するには、次のコマンドが使えます。
git stash list
コマンドの実行結果は次のようになります。
git stash list
stash@{0}: WIP on master: 426459f Updated page1.html
stash@{1}: WIP on master: 426459f Updated page1.html
スタッシュは古いものから、下に表示されています。
stash@{0}、 stash@{1}、・・・は「スタッシュ名」です。
もしこの状態でもう一度スタッシュすると、新しいスタッシュが stash@{0} になり、既存のスタッシュの番号が一つずつ増えます。
尚、 WIP は Work In Progress の略で「作業中」の意味です。
また、ここで見えているのは 426459f はコミットIDです。どのコミットに引き続き作業していたかわかります。
Git のスタッシュの変更点を表示
それぞれのスタッシュで、どのような変更があるか diff を表示するには、次のコマンドを使います。
git stash show -p [スタッシュ名]
スタッシュ名を指定しなければ、最新のスタッシュ stash@{0} の変更箇所が表示されます。
Git のスタッシュを現在の作業ディレクトリに適用
スタッシュを現在の作業ディレクトリに適用するには、次のコマンドを実行します。
git stash apply [スタッシュ名]
スタッシュ名を指定しなければ、最新のスタッシュ stash@{0} が適用されます。
Git のスタッシュを削除
Git のスタッシュを削除するには、次のコマンドを使います。
git stash drop [スタッシュ名]
スタッシュ名を指定しなければ、最新のスタッシュ stash@{0} が削除されます。
全てのスタッシュを削除するなら、 clear オプションを指定します。
git stash clear
Git の最新のスタッシュを適用し同時に削除
最新のスタッシュを作業ディレクトリに適用し、同時にスタッシュのエントリを削除するには、次のコマンドを使います。
git stash pop