作業中のファイルをgit stashして、一部のファイルだけ戻す
小ネタ。
gitでバージョン管理しているプロジェクトで、git stashを使って一部のファイルだけをcommitする方法を忘れないためにメモっときます。ユースケースとしては
- 新規開発案件とかでfeature branch作って作業中
- 作業途中に案件を2つに分割することになった
- 作業途中のファイル(まだindexにのせてない)の中で、一部だけcommit/pushしたい
という感じでしょうか。以下の手順で実施します。
git stashを使って作業途中のファイルを退避
$ git stash save # saveは省略可能
stashされた状態を確認
$ git stash list # stashされている状態を確認(stash@{0}とかで見えるはず)
stashされた内容を確認
$ git stash show <stash名> # stashされている状態を確認(stash@{0}とかで見えるはず)
stashされたファイルを復元
$ git stash apply <stash名>
※ stash applyなら、stashは破棄されずに残ります
stashされたファイルを復元 その2
$ git stash pop
※ stash popするとstashは破棄されます
stashされたファイルの内、指定したファイルを復元
$ git checkout stash@{0} fuga.rb # stash listで表示された名前をファイル名を指定して取り出す
※ checkoutしてもstashは破棄されません
Gitの場合、ガンガンブランチを切って作業をしていくことになるので、こういった一時退避系作業は手に馴染ませておいた方が良さそうですね。