git stashについて
git stashを好んで使うのですが、原理がわかっておらず、混乱しました。
あ、git stashは現在のブランチで変更を一旦避難するものです。
- git stash使用
- 別のブランチでもgit stash使用
- 最初のgit stashをしたブランチでgit stash pop使用
- あれ、最初のじゃない・・・
この原因は、git stashを積み重ねていくと、最後にgit stashをしたものがどんどん最新になっていくからなんですね。
つまり、前のgit stashをしたものはそれに合わせて呼び出してあげないといけません。
$ git stash list
これは今までのgit stashして残っているリストを出してくれます。
stash@{0}: WIP on hoge-hoge: 2f06033 Merge pull request #2680 from hoge/hoge stash@{1}: WIP on hoge: 40a93c8 Merge pull request #2675 from hoge/hoge stash@{2}: WIP on hoge: beafe7a Merge pull request #2665 from hoge/hoge
ここでstash@{1}
の中身を確認したい場合です。
git stash show
これで変更したファイルがわかります。
$ git stash show stash@{1}
Gemfile | 1 + Gemfile.lock | 9 +++++++++ app/models/user.rb | 2 ++ config/routes.rb | 2 ++ db/seeds.rb | 7 +++++++ test/models/user_test.rb | 11 +++++++++++
中身を見る場合は、$ git stash show -p stash@{1}
でgit diffと同じような形で見れます。
最後に取り出したいstashを指定します。
git stash apply
$git stash apply stash@{1}
でほしいものを取り出します。
git stashを使わないと生きていけない体なので、ちゃんと使い方を覚えないとな。