git stash でコンフリクトした際に戻すには git reset --merge する
結論
標題のとおりです。
$ git stash --abort を誰もが一度は即座に実行するかと思いますが、そういうオプションは今のところ無いので、$ git reset --merge で戻します。
補足
$ git stash pop を実行した結果コンフリクトしたとします。
その後に $ git reset --merge を実行することで $ git stash pop は無かったことになりますが、その場合、stash はちゃんと元に戻っています*1。
考察
$ git stash をするとき、どうしてもタイプ数を抑えたいので $ git stash --save "名前" をしないことが多いです。が、そうすると stash がたまりまくってしまい、どれがどれだか分からなくなってしまいます。
stash は原則必ず戻すもの、という考えが守られていれば $ git stash pop が適宜適切に行われ、$ git stash list はいつも空になります。
が、そううまくはいかないもので、stash して寝て次の日になって、さらにそれを繰り返して、ということをしていると、ある日よく分からない大量の stash が $ git stash list にてお目見えすることになります。
面倒でも $ git stash --save "名前" をするのがよさそうです。あとはこまめに stash を掃除してあげたほうがよさそうです。
参考
*1:コンフリクトの解消はできたけど stash のデータが消えた、ということにはならない