Ccmmutty logo
Commutty IT
2 min read

[Git] コミットはせずに変更を退避したい

https://cdn.magicode.io/media/notebox/64ecf236-b792-482f-80a3-432a851bf471.jpeg
「作業中だけど、他の人の変更をpullした反映したい。でも、作業が中途半端だからコミットはしたくない。」というときがあります。
そんなときは stash で、コミットしていない変更を退避することができます。
pullなどで変更を反映した後、退避させていた変更を戻して作業を再開することができます。

変更を退避する

次のコマンドを実行すると、変更した部分が退避されます。
git stash -u
実行後、ワーキングディレクトリ上は差分がない状態になります。 -u は --include-untracked の略です。新規作成ファイルも退避することができます。

退避した作業の一覧を参照する

次のコマンドで、退避した作業の一覧を参照することができます。
git stash list
stash@{0}: WIP on ${BRANCH_NAME}: hogehogehoge
stash@{n} 1行が1回分のstashになります
hogehogehogestash をしたときのHEADのコミットハッシュとコミットメッセージになります

退避した作業を戻す

stash@{0} の作業をもとに戻します。
git stash apply stash@{0}

退避した作業を消す

stash で退避した作業を元に戻しても、退避した情報はリストに残ったままなので削除します。
git stash drop stash@{0}

退避した作業を元に戻すと同時に、stashのリストから消す

git stash pop で実行すると、作業をもとに戻すと同時にリストから消すこともできます。
git stash pop stash@{0}

Discussion

コメントにはログインが必要です。