Adam Albrecht
Adam Albrecht

Reputation: 6870

Git says a file is unmerged and I can't commit, but the file seems to be merged

I had about 12 file conflicts when I merged branches. I manually fixed all the conflicts and staged the files. But now when I try to commit, it says one of the files is unmerged.

U      app/models/disclosure_event.rb
fatal: 'commit' is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as
appropriate to mark resolution and make a commit, or use 'git commit -a'.

When I type git status, it shows all the changed files, including "disclosure_event.rb", under Changes to be committed. It shows no files as unstaged. I've repeatedly tried to add the file, but it seems to do nothing. If I open the file, everything looks great.

Any ideas? I'm completely stuck.

Upvotes: 50

Views: 101776

Answers (5)

Md. Ranju Mia
Md. Ranju Mia

Reputation: 164

Set the remote is origin and the branch is master, and say you already have master checked out, might try the following:

git fetch origin
git reset --hard origin/master

It will set the current branch and points it to the HEAD of the remote branch.

Upvotes: 8

alexkasko
alexkasko

Reputation: 4925

I had exactly the same situation today on branches merging (not rebasing).

I spot, that file it errors on, in your case:

U      app/models/disclosure_event.rb

was absent in git status. But is could be seen as unmerged in gitk GUI. It also was absent in working copy (moved to another place in my case).

I tried git rm, and it solved the problem:

git rm app/models/disclosure_event.rb

Upvotes: 14

Adam Albrecht
Adam Albrecht

Reputation: 6870

I tried the 2 suggestions without any luck. And I couldn't get it to reset back to HEAD, so I just re-cloned the repository and did the entire merge over and didn't have any issues. For what it's worth, I now highly recommend p4merge over vimdiff...

Upvotes: 3

Ivan Danilov
Ivan Danilov

Reputation: 14777

I encountered such situation before with rebase. Git determines that you leave some files as they were before merge and thinks you still didn't merge them. That time I googled and find out many suggestions to do just git rebase --skip. It worked for me.

More detailed description of such case: http://git.661346.n2.nabble.com/BUG-git-rebase-is-confuse-if-conflict-resolution-doesn-t-produce-diff-td726597.html

Similar problem: Git rebase: conflicts keep blocking progress

I'm not sure it is your case if you have merge, though.

Upvotes: 3

Ryan Stewart
Ryan Stewart

Reputation: 128899

I can't tell you what's wrong, but you might try

git reset app/models/disclosure_even.rb
git add app/models/disclosure_even.rb

and then commit.

Upvotes: 74

Related Questions