How do I resolve git merge conflicts on a submodule from `git stash pop`

Mashmagar picture Mashmagar · Feb 23, 2015 · Viewed 13.1k times · Source

I have a git repository with a submodule. I need to pop changes I've previously stashed. However, this is causing a merge conflict on the submodule reference.

I want to keep my changes from the stash, except for the submodule. For most code files, I can resolve the conflict by editing the conflicting file, but that doesn't seem to be an option for the submodule.

How can I resolve the merge conflict and still extract my changes from the stash?

$ git stash pop
warning: Failed to merge submodule some-submodule (commits don't follow merge-base)
Auto-merging some-code
Auto-merging some-submodule
CONFLICT (submodule): Merge conflict in some-submodule

$ git status
# On branch some-branch
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   some-code
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      some-submodule

Answer

Ken Thomases picture Ken Thomases · Feb 23, 2015

As the git status comments say: git reset HEAD some-submodule.

By the way, after you've double checked that your tree and index are how they should be, you will probably want to git stash drop. git stash pop would normally do that, but doesn't when there are conflicts.