質問: `git stash pop` すると ``` xxx: needs merge unable to refresh index ``` となってしまいます これはどういう状態なのでしょうか ファイルの中のコンフリクトは修正したのですがこのメッセージがとれません 追記: 1度コミットしてみたのですが git stash pop すると ``` Auto-merging xxx CONFLICT (content): Merge conflict ``` となって再度コンフリクトした状態に戻ってしまいます git diff stash@{0} をみるとたしかに戻したい状態が保存されているのですが git stash pop したあともそれが反映されていません 今どういう状態になってるか全くわからないので とにかく1度 stash したときの状態に強制的に戻したいのですが方法はないでしょうか 以下操作手順です ``` xxx ファイルを修正してコンフリクトを解消 git add xxx git commit -m 'tmp commit' git status both modified: がなくなったのを確認 git stash pop Auto-merging xxx CONFLICT (content): Merge conflict git status both modified: が復活する ``` の繰り返しです... そもそも pop してるのに stash@{0} が消えてないのもよくわかりません どの情報をみればいいかもわからないので 何かのコマンド結果を出してほしい等あればおっしゃっていただければ随時追記します 追記: いったんコミットするしかないという回答を頂いたのですが 別質問()の回答で stash pop は stash したときのコミットからしかできないらしく もうこういう状態になったら stash からの復帰はできないということでしょうか
回答: こんにちは。 コンフリクトは致命的なエラーではなく、手作業で解消するものです。 `Git コンフリクト 解消`などとググって、そこらに書いてあることをひたすら読み込んでください。 今後Gitを使っていく上で、マージ作業とコンフリクト解消作業を避けて通ることはできません。 一度やり方を覚えてしまえば後々同様の問題が起きても対処できるようになるので無駄な労力ではありません。 おまけです。 完全にstashした瞬間の状態に戻したい場合は以下の手順で復元できます。**stashした以降に加えられた全員の変更は全て破棄されます。** ``` git checkout yourbranch # stashを適用したいブランチをチェックアウト git stash list # stash一覧から該当のstashを確認 => stash@{n}: WIP on temp: XXXXXXX(コミットID) git reset --hard XXXXXXX(コミットID) # stash作成時のコミットに移動 git stash pop n # stashを適用 ```