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} になり、既存のスタッシュの番号が一つずつ増えます。

尚、 WIPWork 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

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Git 入門