【问题标题】:Git merge conflict with 500 files added on local and originGit合并冲突与在本地和源上添加的500个文件
【发布时间】:2014-07-28 07:17:28
【问题描述】:

我在 Visual Studio 中使用 Git,突然在所有文件 上遇到此冲突

我可以点击每个冲突并选择 Take Source,但是由于有 534 个冲突,我宁愿在命令行上进行批量解决。解决所有这些冲突的适当命令是什么?

【问题讨论】:

  • 它们有显着不同吗?
  • 我是项目中唯一的开发人员,几个小时前我推送了两个更改。然后 Git 突然认为我的本地分支没有任何远程更改,所以我必须从分支创建之日起提取所有提交。我不得不说我对 Git 没有太多经验,但我已经创建了几个功能分支并同步更改,直到现在都没有问题。
  • 所有 500 个冲突都是 add/add 类型的,这意味着 Git 认为在本地和远程都添加了相同的文件。我认为我需要做的是运行批处理解析以在每次冲突时保留目标文件或获取源文件。我可以通过单击每个冲突来做到这一点,但我会花费很多时间,所以我正在寻找一个命令来为一个操作中的所有冲突执行此操作。

标签: git visual-studio git-merge


【解决方案1】:

在这种情况下,我的建议是创建第三个分支并在那里进行所有合并,然后当您确定合并按预期进行时,将当前分支替换为第三个分支。 现在,回到最初的问题,我没有使用过 Visual Studio,但我假设 VS 中的 git 命令 shell 的行为与通常的 git 命令 shell 相同。你能描述一下你想要做什么。您是否正在跟踪您在其上进行本地更改的远程分支,而现在您正在提取导致冲突的更改?或者,您是否要合并两个本地分支?

【讨论】:

  • 我现在在对该问题的评论中解释了更多内容。我是项目中唯一的开发人员。在这突然发生之前,我已经同步了很多对分支的更改。我没有切换我的本地分支,但 Git 现在认为我的本地没有远程提交,所以我必须在同步我的两个最新提交之前拉所有提交。即使所有文件都是平等的,我也会在其中 500 个文件上遇到合并冲突。其中大部分我已经好几年没碰过了。
【解决方案2】:

检查 Visual Studio 报告的冲突之间的差异。

它们可能只是 eol 样式(行尾 LF 与 CRLF)

您可以尝试设置 git config core.autocrlf true/false 以查看最有效的方法,但此 Q/A 页面确实提到了 Git plugin doesn't seem to respect that setting anyway


OP Eivind Gussiås Løkseth 加上in the comments

我正在寻找一个命令来为一个操作中的所有冲突执行此操作,因为为所有 500 个冲突执行此操作将花费大量时间

如“Simple tool to 'accept theirs' or 'accept mine' on a whole file using git”中所述,您可以在仓库的根文件夹中执行以下操作:

git checkout HEAD -- .

【讨论】:

  • 所有冲突都是 add/add 类型,这意味着 Git 认为所有文件都是最近添加到本地和远程的。但这显然是工具中的一个错误。我必须为所有冲突获取源或保持目标。文件是相等的。我正在寻找一个命令来为一个操作中的所有冲突执行此操作,因为为所有 500 个冲突执行此操作将花费大量时间。
  • @EivindGussiåsLøkseth 好的,我已经添加了这样一个命令,以及一个详细说明该命令的问题的链接。
  • 谢谢!这是我正在寻找的命令。我必须做一个 git commit -m "something..." 来提交合并,现在所有的冲突都消失了。
【解决方案3】:

我知道这很旧,但我最终陷入了同样的境地。以下是我的解决方法:

  1. 在“合并到”分支中,撤消/中止合并。
  2. 备份有冲突的文件。
  3. 删除所有冲突文件(如果它们在两个分支上相同)
  4. 提交更改(删除文件)
  5. 合并
  6. 重新添加文件提交

应该这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2011-05-18
    • 2022-12-16
    相关资源
    最近更新 更多