git stash popがconflictしたとき、強制的にpopさせる方法
2017-12-31
Techgit stashは便利なコマンドだけど、stashして、stashして、編集して、コミットして、popしてpopして…みたいなことをしてると、stashした時点とコードが変わっててpopできない、みたいなことがたまにある。
こういうとき、git stashのマニュアルを見ると、「手でconflictを解決してからstash popすること」と書いてある。けど、時にはとりあえずなんでもいいから無理やりpopしてほしい、という場合もある。
このようなときは以下の手順でgit stash pop --force的なことができる。
# 手元の変更をいったんcommitする(このコミットはあとで破棄するのでログは適当でよい)
$ git commit -a -m 'tmp'
# stash popする。未コミットの変更がなければ、conflictする場合でもstash popできる
$ git stash pop
# both modifiedになってるファイルをとりあえずaddする
$ git add -a
# 仮commitした内容をもとにもどす
$ git reset HEAD^