git reports merge conflict with no changes, empty

2019-04-04 05:03发布

I'm testing the use of git-subtree to merge a library repo into a bigger project. It seems great in principle. Sometimes when I do a "git subtree pull" I get merge conflicts like this:

<<<<<<< HEAD
=======
An inserted line from the lib repo
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d

That's for a change that was made in the library repo, merging into a file that has not been modified locally. Or another example, where I added a line in the local project repo, but in a file that is part of the subtree being merged:

<<<<<<< HEAD
Another inserted line
=======
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d

Why would git report these as merge conflicts, but the region reported as the conflict is empty? Any way to prevent it?

These are easy enough to resolve, but it messes up the git-subtree workflow

2条回答
干净又极端
2楼-- · 2019-04-04 05:20

Use submodules to hold shared work. There is git-slave if you do a lot of work with shared and non-shared projects that need to be coordinated. Your line ending storage disparity will disappear.

查看更多
Summer. ? 凉城
3楼-- · 2019-04-04 05:36

It's not a solution to your root problem, but rather a mitigation of it. you can use
git merge -Xignore-space-change to ignore space changes in your commits.

It's probably a problem with your line endings. you can try a --dry-run alternative in merge (git merge does not have --dry-run option):

$git merge -Xignore-space-change --no-commit --no-ff $BRANCH

to see the changes before you actually commit them.

查看更多
登录 后发表回答