はじめに
gitで開発する上でとても便利なgit stashについて書きます。git stashを既に知っている人はどうでもいい内容です。知らない人は参考にしてください。
こんなときにどうぞ
- ブランチAでタスクAの開発中に別のタスクBを急ぎで頼まれた!Aの開発途中なのにーっ!となった時に使います。
- ブランチAでコミットしていない時にBブランチを新たに作って、ブランチBに切り替えをしようとすると・・・
error: You have local changes to 'filename'; cannot switch branches.
はい。怒られます。Aブランチはぐちゃぐちゃだしコミットできるまで至っていない。
→git stashを使おう!
使い方
1.編集途中のソースを一時的に退避
git stash (または git stash save)
saveは省略可能です。これだけでもブランチ名と最後にコミットした内容で保存されます。
それでも自分でわかりやすいコメントにしたい時は?
git stash save "your comment"
という感じで自分の好きなコメントを入れることができます。
2.退避した内容を確認します。
git list
先ほど保存した内容が出てきます。
stash@{0}: WIP on branch_a: 8b2c698 コメントコメント
3.AブランチからBブランチに切り替えて作業します
git checkout branch_b
Switched to branch 'branch_b'
今度はエラーなしでブランチが切り替わりました。
ブランチBでタスクBの開発をします。
タスクBの開発をMasterブランチにマージしてタスクBが無事終了。
4.そして再びAブランチに
Bタスクも終わったのでAタスクに戻ります。
git checkout branch_a
git stashの内容を確認します。
git stash list
先ほど保存した内容が出てきます。
stash@{0}: WIP on branch_a: 8b2c698 コメントコメント
前回の保存内容を適用します。
git stash apply stash@{0}
git status
途中で保存していたタスクAのソースが復活します。
4.保存したリストを削除
復活したので、stashのリストは削除しちゃいましょ。
リストがたまるとどれがどのタスクがわからなくなってしまうので、復活した後は削除しちゃいます。
git stash drop stash@{0}
先ほどのapplyとdropが一緒になったコマンドもあります。
git stash pop stash@{0}
復活したと同時に削除されます。
applyとdrop使うか、pop使うかお好きなほうをどうぞ。
そして、優雅にタスクAの開発の続きをやります。
とても便利なgit stashについてでした。
おしまーい。