f:id:azix:20180605205339p:plain

ということがありましたので、メモ。

git stash

stash – こっそりしまう、隠す、蓄える

ということらしく、 コミットしたくないけど変更は残したまま違うブランチで作業したい! というときに使う。

用例

基本的な部分だけ。

1. 保存

f:id:azix:20180605205809p:plain このように変更したものをコミットはせず退避させます。

$ git stash save
Saved working directory and index state WIP on hoge_branch: 6796c35 Merge pull request #3 from hoge/dev

ファイルを見ると変更がなくなっているはずです。
f:id:azix:20180605210147p:plain

これで、hoge_branchにあった変更を保存できました。 本当に保存できているか確認してみます。

2. 保存済みを確認

$ git stash list
stash@{0}: WIP on hoge_branch: 6796c35 Merge pull request #3 from hoge/dev

stashの0番目に保存されていることがわかります。
これを取り出していまのブランチに反映させてみます。

3. 取り出し+削除

$ git stash pop
On branch hoge_branch
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (df55bea129a52dcbe86235da8db0f8acb4f4d7a6)

変更が今のbranchに適用されます。

f:id:azix:20180605205809p:plain

もし、今のブランチにそれ以外の変更がある場合 上書きされる ので注意が必要です。
popは、適用したstashをそのまま削除してくれます。

4.その他応用

  • コメントを付けて保存
$ git stash save "ここにコメントを記入する"

  • 複数stashがある場合に特定のstashを指定する
$ git stash pop stash@{番号}

😌💬 一度 $git stash list で番号を確認してからやろうね!

  • 特定のstashを削除する
$ git stash drop stash@{番号}

まとめ

多用するなら必ずコメントを入れておくこと。日付も入れるとなおよし。
私のスタイルは、 「用途 - yyyy/mm/dd hh:mm」 です。