kentana20 技忘録

技術ネタを中心に、セミナー、勉強会、書籍、会社での出来事を綴っていきます。不定期更新。

作業中のファイルを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の場合、ガンガンブランチを切って作業をしていくことになるので、こういった一時退避系作業は手に馴染ませておいた方が良さそうですね。