I've started Eclipse EGit. In some scenarios it is really not comprehensive.
I have local file e.g. pom.xml changed. On git server this file was changed.
I do pull
, EGIt says:
Checkout conflict with files:
i.e. pulling stops (fetch
is done, but not merge
), that is OK. However the next is bad experience.
I synchronize workspace, put my changes aside and make it the same as FETCH_HEAD. But EGit doesn't want to continue. I replace the file with HEAD revision. But EGit still doesn't want to continue.
What standard expected user operation should be with EGit after conflict resolution?
UPDATE:
I added to index
, then marked as Merged
-> pull
still can't pass.
When I select Merge
I get the dialog
I can't commit the file as it is not in list of changed files.
The proper solution is the one provided by @Jojo.Lechelt.
However if you don't want to commit for any reason and still want to pull the changes,you may save your changes somewhere else,replace the conflicting file with HEAD revision and then pull.
Later you can paste your changes again and compare it with HEAD and incorporate other people changes into your file.
After you get from Eclipse the ugly CheckoutConflictException, the Eclipse-Merge Tool button is disabled.
Git need alle your files added to the Index for enable Merging.
So, to merge your Changes and commit them you need to add your files first to the index "Add to Index" and "Commit" them without "Push". Then you should see one pending pull and one pending push request in Eclipse. You see that in one up arrow and one down arrow.
If all conflict Files are in the commit, you can "pull" again. Then you will see something like:
\< < < < < < < HEAD Server Version \======= Local Version > > > > > > > branch 'master' of ....git
Then you either change it by the Merge-Tool, which is now enable or just do the merge by hand direct in the file. In the last step, you have to add the modified files again to the index and "Commit and Push" them.
Checking done!
Situation:
Solution:
Your local working directory file should be be merged
I guess the best way to do this is like this :
That how I resolve mine, whenever it happens.
Right click on the project and select [replace with] -> Head Revision .Now select pull changes in current branch or pull changes from upstream.
If error comes for ".settings/language.settings.xml" or any such file you don't need to git.
Now if Staged file list empty, and Unstaged file list all files are marked as Ignored. You can pull. Otherwise, follow other answers.
This is the way I solved my problem:
Pull
from master.UPDATE:
As Hugo Zuleta rightly pointed out, you should be careful while applying this. He says that it might end up saying the branch is up to date, but the changes aren't shown, resulting in desync from the branch.
In Eclipse :-
Add conflict file in staged area
Add conflict file in local repository
You will get all changes (change in remote repository and local repository)
Changes mentioned as Head(<<<<<< HEAD) is your change, Changes mentioned in branch(>>>>>>> branch) is other person change, you can update file accordingly.
Right click ->click on add to index
Right click -> commit and push
Source: Stackoverflow.com