2016年 初春。
アルコール漬けのチンピラからプログラマに転身した私が覚えたトリックを備忘録兼ねてまとめるTips_Git編
- git stash
愛してるぜ、スタッシュ!!
心の底からそう思う、数多くあるgit呪文の中でも先週の俺ランキングNo1。
使うとき
- ボクはいまkellyブランチで作業をしています。あと二日はかかりそう。
- すると突然、急ぎの修正作業依頼が舞い込みました。
- 一旦、kellyブランチをコミットして、masterからbillyブランチを切り出して修正作業を行っていました。今までのアチキは。
- でも、まだコミットしたくない!全然区切り良くない!!って思ってた。本当は。
- そんな時にはgit stash
- 今やった変更を退避してくれる。git的には変更は無かったものになるけど実は裏できちんと覚えてる。君のこと。
- そうすれば、billyブランチに切り替えて修正をコミット&プッシュしても、またkellyブランチに戻ってあの日の修正から始められるのよ。
使い方
一旦、退避しておきたいブランチで、単純に
kelly_branch
git stash
すれば、いいだけ。
すると
kelly_branch
Saved working directory and index state WIP on kelly_branch: c4f1c56
"さっきのコミット"
HEAD is now at c4f1c56 さっきのコミット
みたいな感じで退避されます。Saved working directoryって書いてますね。
git status
しても
kelly_branch
On branch kelly_branch
nothing to commit, working directory clean
こんな感じで、変更が無かったことになってるよね。
あの日に帰りたい
billyブランチの修正が終わって、kellyに戻ってきた場合、やった修正はstashによって隠れているので、戻しましょう。
kelly_branch
git stash list
とやると、stashした一覧が見れます。そうです。stashは何度もできるのです。
kelly_branch
stash@{0}: WIP kelly_branch: c4f1c56 "さっきのコミット"
今は1度しかstashしていないのでstash@{0}
しかありませんが、複数ある場合は、stash@{1}
とかstash@{2}
とかが出来上がります。このstash@{x}
はstash名です。
applyメソッドを使って、戻したいstash名を指定すると、あの日に帰れます。
kelly_branch
//戻します。
git stash apply stash@{0}
ちなみに、git stash apply pop
とやると、常に最新のstashに戻れます。
これで、ブランチを切り替えまくって、仕事してる感を味わいましょう。