05stash
別の作業が入った!別のブランチをチェックアウトしないといけないけど、今チェックアウトしているブランチの変更はまだコミットしたくない!というときに、「一時的に退避」させるためのコマンドです。
下記のコマンドを実行しながら実践してみましょう。
// branch_dブランチを作成
git checkout -b branch_d
// 文字列を追加
echo "Git test 6th string" >> file01
// statusを確認(インデックスには追加されていない状態になっているか?)
git status
// stashはスタック構造なので、saveした変更が順に積まれていく。
git stash save
// スタッシュしている変更の一覧を確認
git stash list
// この時点でのステータスを見てみると、ワークツリーに変更がないきれいな状態になっている
git status
// スタックしている一番最新の変更をワークツリーに反映する
git stash pop
// スタッシュしている変更の一覧を確認→popしたので、なくなっている!
git stash list
通常、スタッシュは複数積み上げない方が望ましいです。
ただし、複数のブランチで作業しており、複数のスタッシュが必要な場合があるかもしれません。
しかしながら、先ほど紹介した方法では最新のスタッシュしか適用することができず、最新でないスタッシュを取り出す必要がある場合もあるでしょう。そのような状況に対処するために、以下の方法を使ってスタッシュを適用する手順をご紹介します。
// 事前準備:先ほどstashでの変更をステージ→コミット
git add .
git commit -m "6th string"
// 文字列を追加→スタッシュ
echo "stash 1" >> file01
git stash save "stash 1"
// 文字列を追加→スタッシュ
echo "stash 2" >> file01
git stash save "stash 2"
// スタッシュの一覧を表示
git stash list
// 今回は"stash 1"のスタッシュを復活させます。
git stash pop stash@{適用したいスタッシュの番号}
コメントを残す