git stash でコンフリクトしたとき

git stash pop

を実行すると、 CONFLICT (content): Merge conflict in *******.cs と表示されました。

git checkout --ours .
git reset
git checkout .

これを実行することで git stash pop 前の状態に戻すことができるので、conflictを起こすファイルを編集してコミットし直しましょう。

(stashに限らずmergeのときは共通ですが、)conflictした部分のstashした部分を無視したければ、

git checkout --ours .

stashからのデータで上書きしたければ、

git checkout --theirs .

をしてから

git stash drop 0

でstashを消します。ちなみに消してはいけないstashを間違えてdropしてしまったときはdrop直後に表示される Dropped refs/stash@{0} (77b6b09adfff175a30aee5a9528ddb868108c5e6) からハッシュ値を拾ってきて、以下のコマンドで元に戻すことができます。

git cherry-pick -n -m1 77b6b09adfff175a30aee5a9528ddb868108c5e6

参考

git stash pop で conflict したときに、なかったコトにしたい – Qiita

Leave a Reply

メールアドレスが公開されることはありません。