git - 如何仅通过更改文件模式来批量解决 Git 冲突?

标签 git version-control git-merge

我正在尝试 merge 两个存储库,只有几个“真正的”冲突,但有大约 70 个“已添加”的文件冲突。然而,当查看 git diff 时,它只显示文件模式已更改。

批量接受当前文件模式并忽略传入文件模式的最佳方法是什么?

一点背景: 这两个存储库具有相同的代码,但其中一个已通过 SVN 进行跟踪,因此没有历史记录。我现在正在使用 git-svn 来跟踪它并将它与当前的 git 存储库 merge 。

merge 时传入的冲突显示为: CONFLICT (add/add): merge framework/file/name.php 中的冲突 自动 merge 失败;修复冲突,然后提交结果。

Git 状态显示: 都添加了:framework/file/name.php

如果我使用 git mergetool,它不会显示任何冲突。使用此方法遍历每个文件需要很长时间。

最佳答案

因此,在尝试了所有各种 merge 策略并确定我需要从存储库中获取文件模式、丢弃本地文件模式之后,我想出的最佳解决方案是使用: git checkout --theirs <remote/branch> -- path用于文件模式更改,并使用 git mergetool用于代码冲突解决。 使用 git diff,我可以看到哪些文件是文件模式更改,哪些是文件代码更改。 git merge使用 --recursive -Xours作为默认的 merge 策略。

有一个git配置变量:core.fileMode可以忽略文件模式的改变。 请参阅:How do I make Git ignore file mode (chmod) changes?

关于git - 如何仅通过更改文件模式来批量解决 Git 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6835796/

相关文章:

git - Git 推送不能快进 merge 是什么意思?

git - 如何在本地 check out merge 请求,并创建新的本地分支?

git - 在 `git pull origin <remote-branch> : <local-branch>` 中使用冒号不会 pull 到正确的分支?

git - 我怎样才能 gitignore 目录结构中的文件但保持目录结构?

没有推送的 Git merge 不会出现在远程存储库中

git - 我怎样才能切换到git中的另一个分支?

git - 使用稀疏 checkout 更改存储库目录结构

git pull 错误 :error: remote ref is at but expected

git - 如何在 Refactor > Rename 上避免 PhpStorm 暂存文件

python - 如何在应用程序的源代码管理中管理 python 版本?