commitしてない変更分を一時的に退避しておくことが出来る
改修を行っている時、割り込みで他の修正が入ったり、修正しておかなければいけなかったところが目に入ってきたりして
今修正中のファイルを一旦別のディレクトリにコピーして、、、みたいなことをやらなくてすむ。
けど、、、
いろいろ実験していたら「こんな動きになるんだ~」って思うことがあったので
1度、いろんなケースを実験してみた方が良いと思います。
それで、私なりにこういう運用が今のところ1番良いかなと思ったのでメモします。
■修正中ソースを退避する
※ステージングされていない新規追加ファイルは退避されないので
1.’-u’オプションを付けて強制的に退避する
>git stash save -u “コメント”
または
2.新規追加ファイルをステージングしてから
>git stash save “コメント”
修正中ソースは退避され、前回コミットの状態になる。
コメントもsaveも省略可能だが、退避が複数あると分からなくなるのでコメントは付けた方がよい。
■退避一覧を確認
>git stash list
退避中のものが↓こんな感じで表示される
stash@{0}: WIP on master: c69d54e first commit
stash@{1}: WIP on master: c69d54e first commit
コメントをいれておかないと分からなくなる。
コメントを入れておくと↓こんな表示で分かりやすい
stash@{0}: On master: コメントです
ちなみに、新しいもの順に表示されるので
{0},{1}となっているけど、退避した順番は逆になる
■退避したものを戻す&消す
>git stash pop stash@{0}
stash@{0}は、退避一覧で確認したstash番号
■退避したものを全て消す
>git stash clear
退避したけどいらなくなった場合は全て消せばよい
とりあえず、これだけ知っていれば十分!!
■退避したものを戻すだけ
>git stash apply stash@{0}
戻すけど、退避一覧には残る
■退避一覧から削除
>git stash drop stash@{0}
1つだけ消したい場合
■退避した内容を確認したい
>git stash show stash@{0} -p
■退避中のファイルを触っちゃって戻そうとしたらどうなる??
大抵はマージの選択が出来るけど
abortしてマージも戻させてももらえない状態もある。。。
いろいろ謎があるけどこういうものなのか??
実際のプロジェクトだと怖くて結局ファイルやフォルダのバックアップをとってそう^^;