最近だけど、あるブランチで作業をしていた時に
急遽他の作業依頼が来たんだよね。
あれ、今のブランチの作業履歴ってどうやって保存して
他のブランチを切ればいいん...?って困ったのがきっかけ。
stashを使うとコミットしていない変更履歴を退避させておくことが可能みたい。
まじでgitすごい。
実はstashのこと知る前は、ローカルに変更したファイル群をそのまま保存して
あとで1ファイルずつまた変更しなおしてたんだよね。
まじでなんでもっと早く教えてくれなかった??????ってブチギレそうになったことが以前ある。
まず変更を退避!
$git stash save "XXXXXX"
これでブランチ上の変更が退避される。
まあつまり、ブランチは変更が加えられていないクリーンな状態になる。
ちなみにXXXXXXのところはコメントだよ。後でこのstashってなんだっけ...?ってならないためのやつ。
俺はいつも"feature/XXXXXX_yyyymmdd"って感じでstash名に加えて年月日をアンダースコアの後に追記してるかな。
※commitしちゃってたらだめだよ。addされた変更もしくはaddされていない変更のみが対象だからね。
やべえ、commitしちゃってたって人は戻す方法があるからそれはそれで調べてね。ごめん。
え、本当に退避できてんのかな?
$git stash list
// 出力はこんな感じ。もしかしたらちょっとちがうかも。まあいっか。うろ覚えなんでね。
stash@{0}: feature/XXXXXX_yyyymmdd
これでさっきのstashがしっかり保存されている(退避されている)ことが確認できたね。
ついにブランチがクリーンな状態に... めでたい。
もう思う存分新規ブランチを切りまくってください。バンバン移動してもらって構いません。
よし、退避した変更を元に戻しますか
// stash@{0}の作業を元に戻すよ
$git stash apply stash@{0}
これでなんと、退避した変更は元通り。
微妙にめんどくさいけど、何回かやれば大丈夫すぐなれる。
あ、一点だけ注意。元に戻すときは、ちゃんと変更を元に戻したいブランチへ再移動してからにしてね。
これが最初できてなくて、若干混乱したことが何回かあるんで~
退避履歴溜まってきたし、削除してえ
$git stash drop stash{0}
dropしちゃえば削除できるよ。
削除前と後にはlistでしっかり削除確認してね。
あと、間違えてstashを削除してしまっても元に戻す方法はあるらしい...
それについてはまたどこかのタイミングで!
最後に復習しよっか これで忘れない
- saveして
- list確認して、他ブランチで作業開始
- 作業が終わったら、ブランチを移動してapplyしてOK
- stashが溜まってきてうぜえってなったらdrop
おわり。
つかれた。