ワーキングディレクトリとステージングエリアの変更点を一時退避する時はstash
コマンドを使用します。緊急対応で他の作業をする必要がある場合に、今の作業の進捗はcommitする程でもないときなどにstash
を使います。
ワーキングディレクトリとステージングエリアを一時退避する
git stash
# untracked fileもstashする
git stash -u
# untracked fileとgitignoreしているファイルもstashする
git stash -a
# メッセージをつけてstashする
git stash save "メッセージ"
stashを確認する
# stashの一覧を表示する
git stash list
# stashの中身を確認する
git stash show stash@{n}
一時退避した変更点をワーキングディレクトリに戻す
# 全stashを戻す
git stash apply
# 特定のstashだけ戻す
git stash apply stash@{n}
# 一律ワーキングディレクトリに戻すのではなく、ステージングエリアにあったものをステージングエリアに戻す場合
git stash apply --index
※ワーキングディレクトリで同じファイルを変更している場合はエラーになってstash apply
できない場合があるので、一度ステージングエリアにadd
してからstash apply
し、発生するコンフリクトをmergetoolで解決する。
stashを削除する
# 全stashを削除する
git stash drop
# 特定のstashのみ削除する
git stash drop stash@{n}
# 一番最新のstashのapplyとdropを同時にする
git stash pop