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

狂风中的少年 提交于 2019-12-22 08:18:19

问题


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.


回答1:


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?




回答2:


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.



来源:https://stackoverflow.com/questions/6835796/how-to-mass-resolve-git-conflicts-with-only-file-mode-changes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!