开发者

How to mass-resolve Git Conflicts with only File Mode changes?

I am trying to merge two repositories, and there ar开发者_如何学Goe only a couple of "real" conflicts, but there are about 70 file conflicts of "Both added". When viewing a git diff, however, it only shows file mode changed.

What would be the best way to mass-accept the current file mode and ignore the incoming file mode?

A little background: These 2 repositories are of the same code, but one has been tracked through SVN, so doesn't have a history. I'm using git-svn to track it now and merge it with the current git repository.

The incoming conflicts on merge appear as: CONFLICT (add/add): Merge conflict in framework/file/name.php Automatic merge failed; fix conflicts and then commit the result.

Git status shows: both added: framework/file/name.php

If I use the git mergetool, it does not show any conflicts. Going through each file using this method takes a very long time.


So after trying all the various merge strategies, and determining that I needed to take the file mode from the repository, discarding the local file mode, the best solution I came up was to use: git checkout --theirs <remote/branch> -- path for the filemode changes, and used git mergetool for the code conflict resolution. Using git diff, I could see which files were filemode changes, and which were file code changes. git merge uses --recursive -Xours as the default merge strategy.

There is a git config variable: core.fileMode that can ignore file mode changes. See: How do I make Git ignore file mode (chmod) changes?


How about git merge -Xours branchToMergeIn? It will merge the two and give preference to your current branch. Never tried it with mode changes, but should do the trick...

edited with jeffromi's merge strategy.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜