我正在尝试合并两个存储库,并且只有几个“真正的”冲突,但是大约有70个“两个已添加”的文件冲突。但是,在查看git diff时,它只显示文件模式已更改。
批量接受当前文件模式并忽略传入文件模式的最佳方法是什么?
一点背景: 这两个存储库具有相同的代码,但是已经通过SVN跟踪了一个,因此没有历史记录。我正在使用git-svn来跟踪它并将其与当前的git存储库合并。
合并时的传入冲突显示为: CONFLICT(添加/添加):在framework / file / name.php中合并冲突 自动合并失败;修复冲突,然后提交结果。
Git状态显示: 两者都添加了:framework / file / name.php
如果我使用git mergetool,它不会显示任何冲突。使用此方法浏览每个文件需要很长时间。
答案 0 :(得分:4)
因此,在尝试了所有各种合并策略,并确定我需要从存储库中取出文件模式,丢弃本地文件模式后,我提出的最佳解决方案是使用:
文件模式的git checkout --theirs <remote/branch> -- path
更改,并使用git mergetool
进行代码冲突解决。
使用git diff,我可以看到哪些文件是文件模式更改,哪些是文件代码更改。
git merge
使用--recursive -Xours
作为默认合并策略。
有一个git配置变量:core.fileMode可以忽略文件模式的更改。 请参阅:How do I make Git ignore file mode (chmod) changes?
答案 1 :(得分:1)
git merge -Xours branchToMergeIn
怎么样?它将合并两者并优先考虑您当前的分支。从未尝试过模式更改,但 应该这样做......
使用jeffromi的合并策略编辑。