在本地和远程仓库中添加了500个文件后,在Git合并时出现冲突

7

我正在使用Visual Studio中的Git,突然在所有文件上都遇到了这个冲突 screenshot

我可以逐个点击每个冲突并选择“接受源”,但由于有534个冲突,我宁愿在命令行上进行批量解决。请问应该使用哪些命令来解决所有这些冲突?


它们是否有显著的不同? - Anubian Noob
我是项目中唯一的开发人员,几个小时前我推送了两个更改。然后Git突然认为我的本地分支没有任何远程更改,所以我必须拉取从创建该分支的那天起的所有提交。我必须说我对Git没有太多经验,但是我已经创建了几个功能分支并同步更改,直到现在都没有问题。 - Eivind Gussiås Løkseth
所有500个冲突都是add/add类型,这意味着Git认为相同的文件已经在本地和远程都添加了。我认为我需要运行批量解决程序,以便在每个冲突中保留目标或采用源文件。我可以通过逐个点击每个冲突来完成,但这需要很长时间,因此我正在寻找一种命令来一次性解决所有冲突。 - Eivind Gussiås Løkseth
3个回答

3

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

可能是关于行尾样式(行末LF vs. CRLF)的问题。

您可以尝试设置git config core.autocrlf true/false,以查看哪种方式最有效,但是这个Q/A页面提到Git插件似乎无论如何都不会遵守该设置


OP Eivind Gussiås Løkseth在评论中补充道

我正在寻找一个命令来进行一次操作中的所有冲突,因为对于所有500个冲突进行此操作需要很长时间

如"使用Git完成对整个文件的“接受我的”或“接受他们的”的简单工具"中所述,在您的存储库根目录中,可以执行以下操作:

git checkout HEAD -- .

所有冲突都是add/add类型,这意味着Git认为所有文件在本地和远程都是最近添加的。但这显然是工具中的一个错误。我必须要么采取源或保留目标来解决所有冲突。这些文件是相等的。我正在寻找一个命令来一次性解决所有500个冲突,因为逐个解决需要很长时间。 - Eivind Gussiås Løkseth
@EivindGussiåsLøkseth 好的,我已经添加了这样一个命令,以及一个详细说明该命令的问题链接。 - VonC
谢谢!这就是我要找的命令。我必须执行 git commit -m "something..." 来提交合并,现在所有冲突都已经解决了。 - Eivind Gussiås Løkseth

0

我知道这已经过时了,但我最终也遇到了同样的情况。以下是我的解决方法:

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

这样就可以了。


0
在这种情况下,我的建议是创建第三个分支并在那里进行所有合并,然后在确保合并按预期进行时将当前分支替换为第三个分支。 现在,回到最初的问题,我没有使用过Visual Studio,但我认为VS中的git命令行与通常的git命令行的行为相同。您能描述一下您正在尝试做什么吗? 您是否正在跟踪一个远程分支,在该分支上进行了本地更改,现在正在拉取引起冲突的更改? 还是,您正在尝试合并两个本地分支?

我现在在问题的评论中解释得更详细了。我是该项目中唯一的开发人员。在这突然发生之前,我已经多次将更改同步到分支上。我没有切换本地分支,但是Git现在认为我的本地没有远程提交的任何内容,因此在同步我的最新两个提交之前,我必须先拉取所有提交。即使所有文件都相等,我也会在其中的500个文件上遇到合并冲突。其中大部分文件我已经好几年没有碰过了。 - Eivind Gussiås Løkseth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接