How to mass-resolve Git Conflicts with only File Mode changes?
I am trying to merge two repositories, and there are 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.
2 Solutions collect form web for “How to mass-resolve Git Conflicts with only File Mode changes?”
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?
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.