すみません、私は使えてませんでした・・・・
ということで、git stash正しく使っていきましょう。
#ブランチの変更点を一旦、置いておくstash
git stash便利ですよね。
今作業しているブランチから、別のブランチを覗きたいときに、一旦現ブランチの変更点を避けてくれるやつ。よく使ってます。
そんな中ふと、自分の作業中ブランチから、自分の別のブランチで新しいファイルを作成して、最初のブランチに戻ってコミット積んだら、自分の別のブランチで作業していた内容もコミットに含まれていた。。
状況としては、こんな感じ。
master---branch1(自分のタスク1)
|
|--branch2(自分のタスク2)
つまり、branch2でやっていた内容が、branch1にも反映されてコミット内容に含まれていたということ。
原因は、結論、git stash
は新規ファイル作成についての変更点は避けることができないということだった。
どうしても、新規ファイル作成も避けたい場合は、-uオプションを付ければ良いらしい。
$ git stash -u
#git stashコマンドのまとめ
ここからは、使い方のまとめになります。
流れを落とし込んで正しく使っていけるようにしましょう!
##現在作業中のブランチから離れて、別ブランチに移動したい時
- 現在作業中のブランチ内の変更を一旦避けて、別ブランチに移動できる状態にする
- その後、移動し、やることを終えて、変更を避けたブランチに戻る
- 避けておいた変更点を呼び戻す
###現在作業中のブランチ内の変更を一旦避けて、別ブランチに移動できる状態にする
# 変更を避けておく
$ git stash
# 新規ファイルも退避対象に含める
$ git stash -u
###避けておいた変更点を呼び戻す
# 直近のスタッシュをカレントブランチに適用する + スタッシュを残す
$ git stash apply
# 直近のスタッシュをカレントブランチに適用する + スタッシュを削除する
$ git stash pop
##特定の避けたスタッシュを呼び戻したい
- スタッシュ一覧を表示する
- スタッシュ番号を指定して、適用する
###スタッシュ一覧を表示する
# スタッシュリストを表示
$ git stash list
# スタッシュ番号: WIP on work/ブランチ名: 親コミットID コミットメッセージ
stash@{0}: WIP on work/Signup: 789ijkl third commit
stash@{1}: WIP on work/Login: 456efgh second commit
stash@{2}: WIP on work/add-rubocop: 123abcd first commit
###スタッシュ番号を指定して、適用する
# 直近のスタッシュをカレントブランチに適用する + スタッシュを残す
$ git stash apply stash@{0}
$ git stash apply
# スタッシュ番号1を指定して、カレンとブランチに適用 + スタッシュを残す
$ git stash apply stash@{1}
# スタッシュ番号2を指定して、カレンとブランチに適用 + スタッシュを削除する
$ git stash pop stash@{2}
##スタッシュを削除したい
# 直近のスタッシュを削除
$ git stash drop stash@{0}
$ git stash drop
# スタッシュ番号1を指定して削除
$ git stash drop stash@{1}
# すべて削除
$ git stash clear