プログラミング学習をしていて、ブランチを切り替えたいけど今いるブランチに変更履歴が残っていて、ブランチ変更できない!!そんな時はどうするのがいいのかを解決します!
git stashとは
git stash
とはGitで作業を一時的に退避させておくことができる機能です。
stashで変更を退避させて、今すぐやりたい作業をして、退避させていた変更を戻して作業を再開することができます
git stashの使い方
$ git stash
ワーキングツリー(addしてない状態)、インデックス(addしてる状態)にある変更履歴を退避する。
作業の内容を記載して保存する
$ git stash save "comment"
git stashした作業のリストを見る
$ git stash list
過去によけた作業の一覧はgit stash list
で取得できます。
git stashは複数保存もできるのでそのstashしたリストをターミナルに表示されます。
stash@{0}: On master: マスターブランチにてbookの投稿の作業中
stash@{1}: On develop: デベロップブランチにてmap機能作業中
stash@{1}
の部分はstashした順に引数が割りあてられます。
これによってあとでどのstashした内容を戻すのかを指定することができます。
stashしておいた変更履歴を戻す
git stash pop stash@{引数}
作業はgit stash pop
を用いて戻すことができます。
作業を止めておいたブランチに戻り、pop
の後に一覧で見られる戻したい作業の引数を用いてstash@{引数}
と記述し、実行します。
ここでその作業ブランチに戻らないと、コンフリクトなど面倒なことが怒るので注意が必要です。!
stashした内容を一気に戻したい時や一つしかstashしてない場合は、git stash pop
のみで大丈夫です。
例えば、マスターブランチにてbookの投稿の作業中という内容の作業に戻りたい場合は、git stash pop stash@{0}
とします。
stashしておいた作業を消す
$ git stash drop stash@{引数}
stash内容を全て消す
git stash clear
一覧にある全ての作業を消したいときは、git stash clear
を使用します。
何か間違っていること等あればよろしくお願いいたします。