Magicode logo
Magicode
1
2 min read

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

「作業中だけど、他の人の変更を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

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