Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Lab从源主机(远程存储库)拉取,如何解决合并冲突?_Git_Merge_Gitlab_Git Bash - Fatal编程技术网

Git Lab从源主机(远程存储库)拉取,如何解决合并冲突?

Git Lab从源主机(远程存储库)拉取,如何解决合并冲突?,git,merge,gitlab,git-bash,Git,Merge,Gitlab,Git Bash,我发现文件中有很多合并冲突,这些冲突并不一定重要。有没有办法从远程存储库中提取并忽略这些文件 一些合并错误如下所示: CONFLICT (content): Merge conflict in FoodSpot/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache Auto-merging FoodSpot/bin/FoodSpot.pdb CONFLICT (content): Merge conflict in FoodSpot/b

我发现文件中有很多合并冲突,这些冲突并不一定重要。有没有办法从远程存储库中提取并忽略这些文件

一些合并错误如下所示:

CONFLICT (content): Merge conflict in FoodSpot/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Auto-merging FoodSpot/bin/FoodSpot.pdb
CONFLICT (content): Merge conflict in FoodSpot/bin/FoodSpot.pdb
Auto-merging FoodSpot/bin/FoodSpot.dll
CONFLICT (content): Merge conflict in FoodSpot/bin/FoodSpot.dll
Auto-merging FoodSpot/FoodSpot.csproj
CONFLICT (content): Merge conflict in FoodSpot/FoodSpot.csproj
Auto-merging FoodSpot/Additional_Scripts/distributor-script.js
Auto-merging .vs/FoodSpot/v16/.suo
CONFLICT (content): Merge conflict in .vs/FoodSpot/v16/.suo
Automatic merge failed; fix conflicts and then commit the result.

有没有办法从远程存储库中提取并忽略这些文件

这个问题很容易回答:第一,但这不是真正正确的问题

我发现文件中有很多合并冲突,这些冲突并不一定重要

如果“您”和“他们”对已匹配为“同一文件”的文件有不同的更改,则会发生合并冲突。如果您想保留一个或多个文件的版本,或者获取一个或多个文件的版本,这很容易做到。这就是合并冲突的解决方案:您已经“修复”了冲突,将其中一个版本扔掉,而将另一个版本批发

请确保这是解决冲突的正确方法,因为从现在起,Git将相信这是解决冲突的正确方法

下面是发生了什么以及Git命令将解决什么冲突的示例:

          I--J   <-- yourbranch (HEAD)
         /
...--G--H
         \
          K--L   <-- theirbranch
提交
M
包含最终合并结果

如果您希望新提交
M
中的
FoodSpot/bin/FoodSpot.pdb
副本与提交
J
中的副本匹配,请告诉Git:

git checkout HEAD -- FoodSpot/bin/FoodSpot.pdb
git checkout MERGE_HEAD -- FoodSpot/bin/FoodSpot.pdb
如果您希望新提交
M
中的
FoodSpot/bin/FoodSpot.pdb
副本与提交
L
中的副本匹配,请告诉Git:

git checkout HEAD -- FoodSpot/bin/FoodSpot.pdb
git checkout MERGE_HEAD -- FoodSpot/bin/FoodSpot.pdb
这两个操作都将替换该文件的工作树副本和Git的索引副本,并在此过程中将冲突标记为“已解决”


1实际上,您可以通过
.gittributes
设置合并驱动程序。别这样!这是个陷阱。如果您有一个更改过的文件,而他们没有更改,并且您设置了一个合并驱动程序以获取“他们的”版本,那么该驱动程序将不会启动。使用
--no commit
手动进行合并,即使没有冲突,也要确保使用“他们”版本的文件


至少其中一些文件可能根本就不应该提交 上面的一个文件名以
.dll
结尾。DLL通常是生成产品,而不是源文件。一个有
obj
;这些通常是构建产品。有几个文件中有
bin
,Git不太擅长处理二进制文件

但是,从意外提交的存储库中删除生成产品时会出现问题。由于无法更改现有的提交,如果您进行了缺少文件的新提交,则在包含文件的旧提交和不包含文件的新提交之间进行的任何比较都会将文件显示为已删除(旧->新)或已添加(新->旧)

这是否是一个问题,如果是的话,您应该怎么做,这是两个独立的问题,但是Git永远不能单独合并二进制文件。Git的合并代码只能很好地理解,认为它可以理解纯文本,然后只能逐行理解。纯文本XML结构文件将被Git错误合并。如果您有这样的文件,千万不要相信Git的合并,即使Git认为没有任何冲突。确保测试或检查每个文件