stashしてpopして迷走した話
リモートの変更を取り込みたいなと思ったら
$ git pull Cannot pull with rebase: You have unstaged changes. Please commit or stash them.
commitかstashして変更を何とかしないとpullできないよ!!って言われました
なので一旦stashして退避
$ git stash # ローカルの変更が退避されたのでpullできる $ git pull # pullしたから退避したのを戻します $ git stash list stash@{0}: WIP on develop: 123456 hoge_stash # 要らない stash@{1}: WIP on develop: 789012 fuga_stash # こいつを戻したい stash@{2}: WIP on develop: 345678 piyo_stash $ git stash pop stash@{1} # 特定のstashを戻したい fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
指定の仕方がおかしい模様
結局こうなりました
$ git stash pop stash@\{1\}
エスケープしただけ
ローカルの変更をいい感じに使いたい
# stash popするけどstash listからは削除しない $ git stash apply stash@{n} # git stash popは適用して削除される
pullできなくてstashしてローカルが死んで...を繰り返していましたが
git stash save (name) で名前をつけて退避させ
applyで使い回すというセコ技(名前つけてこれを使い回すと明示)
stashするたびにローカルが死んでた問題をこれにて解決
gitignoreはそのうちいじる予定だけど一旦これで放置します
その他stash便利コマンド
# stashされてるファイル一覧 $ git stash show stash@{n} # untracking files も含めてstash $ git stash -u # unstaged filesも含めてstash $ git stash -k # stashの削除 $ git stash drop # 最後のstashを削除 $ git stash drop stash@{n}
参考
git - stash@{1} is ambiguous? - Stack Overflow
色々な git stash - Qiita