Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git pull from clean directory has merge conflicts

Tags:

git

I did a git pull from my upstream on a clean working directory and it presents me with merge conflicts. I spent about an hour manually resetting them thinking I had screwed something up and it happened again.

Is this a bug in git? I know little about it, so I'm fully willing to accept that I did this to myself.

Here's my truncated output (it happens to about 9 files but I wanted to save space, and file names have been changed to protect the innocent):

$ git status
# On branch master
nothing to commit (working directory clean)
$ git pull
Auto-merged xxxx/xxxx/xxxx.xxx
CONFLICT (content): Merge conflict in xxxx/xxxx/xxxx.xxx
Automatic merge failed; fix conflicts and then commit the result.

I'm using Solaris 11 Express with the package default git.

$ uname -a
SunOS xxxx 5.11 snv_151a i86pc i386 i86pc Solaris
$ git --version
git version 1.5.6.5
$ pkg list git
NAME (PUBLISHER)                              VERSION         STATE      UFOXI
developer/versioning/git                      1.5.6.5-0.151.0.1 installed  -----

I found this question: Git pull fails: You have unstaged changes. Git status: nothing to commit (working directory clean), which seems closest but has an unsatisfying answer.

How can I get past this without deleting my entire repository and making a new clone?

like image 754
bahamat Avatar asked Jun 27 '11 21:06

bahamat


People also ask

How do I see a merge conflict in a pull request?

Pull the most recent version of the repository from Bitbucket. Checkout the source branch. Pull the destination branch into the source branch. At this point, pulling the destination will try to merge it with the source and reveal all the conflicts.


1 Answers

Your working directory may be clean, but you have one or more commits that you have made locally that are not on the server. When you pull, git tries to merge these local commits with the ones on the server, but since they modify the same area of the code, they conflict.

Your options here basically boil down to:

  1. Fix the conflicts. You tell git how to handle the conflicting changes, and move on.
  2. Rebase and fix the conflicts, with git pull --rebase. This is not much different from 1, but if your changes have never been published (ie, they've never been pushed, ever), this may get you a cleaner (linear) history.
  3. Discard your local changes and use the remote's, with git reset --hard remotename/remotebranch. This will lose any changes you have committed locally but not pushed elsewhere.
like image 119
bdonlan Avatar answered Oct 18 '22 10:10

bdonlan