ひろろの思うがままに。

自由奔放。思ったことや感じたこと、そんなことを書き溜めて、レベル上げて。

【Git】stashって意外と便利よね

f:id:tack13:20190906233014p:plain

どうも、おはこんばんにちは、ひろろです。

今回は、Gitのstashについて書いておこうと思います。

自分自身stashはちょいちょい使うけど、たまにあるのが「これ何のやつだっけ?」です。

変更分を退避しといたり、戻したり、削除したり・・。

stashに限らずローカルのGit環境も基本的にはスッキリさせておきたいなって思ってます。

概要

  • stashとは
  • 変更を退避
  • 退避した作業一覧
  • 退避した分を元に戻す
  • stashの削除

stashとは

変更を退避すること。

例えば、あるブランチで作業中に他にやるべきことができてしまった場合に、「コミットはしたくないけど、この変更分は残しておきたい!」とかいう場合に使えます。

あとでまた作業を再開したい場合もすぐに戻すことが可能です。

変更を退避

$ git stash

まだコミットしていない状態の変更ファイルを一時的に退避することができます。

ちなみに、

$ git stash save "これはあの時のスタッシュ"

saveオプションは省略可能ですが、指定することでstashにコメントを付与することができます。

退避した作業一覧

stashで退避した作業の一覧を見ることができます。

$ git stash list

stash@{0}: On develop: これはあの時のスタッシュ
stash@{1}: WIP on develop: 12345a67 fix: xxx

こんな感じでstash@{n}stashの名前でそれ以降はブランチ名やスタッシュメッセージです。

上のstash@{0}で言うと、

  • ブランチ: develop
  • メッセージ: これはあの時のスタッシュ

となります。

ちなみに、退避はスタック方式と言うか積み上げなので、下にいくほど古いstashとなります。

リストから退避した作業ファイルを確認

$ git stash show stash@{n}

元に戻す前にファイルを確認する場合は上記で確認できます。

上のstash@{0}で言うと、

$ git stash show stash@{0}

 html/test.html | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

こんな感じです。

退避した分を元に戻す

$ git stash apply stash@{n}

退避した分を元に戻す場合は、applyを使用します。

この時、現在のブランチに退避した変更が適応されるので、元々作業していたブランチ以外にも戻すことができます。

stashの削除

$ git stash drop stash@{n}

退避した変更分を削除することができます。

applyで元に戻してもリストはそのまま残ります。

退避した変更分を元に戻すと同時にリストも削除する

$ git stash prop stash@{n}

退避した分も元に戻して、そのstashはもういらないなって場合はpropを使用して同時に行うことができます。

個人的にはpropはほぼ使うことはなく、完璧に「必要ないな」となった時点でdropで削除してます。

終わりに

とまあ、こんな感じで自分の備忘録的な感じで書いておきます。

これ書いてる時点でも「あぁ、こんなんあったな」だったし

忘れるな、俺!