首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决git拉取后的冲突?

如何解决git拉取后的冲突?
EN

Stack Overflow用户
提问于 2009-09-16 22:05:40
回答 5查看 100.9K关注 0票数 56

git pull之后,我必须解决一些冲突。

代码语言:javascript
复制
$ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.

所以我用谷歌搜索了一下,发现人们都在说使用git mergetool。但这是我得到的:

代码语言:javascript
复制
$ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found

所以这是不是意味着我必须安装一些东西?

如果我只是想让git pull的版本覆盖所有内容,那该怎么办?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-09-16 22:18:55

你不需要mergetool来做这个。它可以很容易地手动解决。

您的冲突在于您的本地提交添加了一个文件vision_problem_8.h,远程提交也通过从vignette_generator_mashed.h重命名该文件创建了该文件。如果您运行ls -l vision_problem_8.h*,您可能会看到git为您保留的这个文件的多个版本。其中一个将是您的,另一个将是远程版本。您可以使用编辑器或任何您喜欢的工具来解决冲突的内容。完成后,提交受影响的文件并提交以完成合并。

如果您只想使用远程提交的版本,那么您只需将未写入的副本移动到适当的位置并对其执行git add操作即可。

关于合并工具,请看一下git help mergetool。基本上,它将尝试运行每个包含的可能性,直到找到一个,或者使用您显式配置的一个。

票数 25
EN

Stack Overflow用户

发布于 2012-10-09 03:20:24

我想您只是忘了在命令行中使用"-t“开关。根据git帮助页面,它代表"-t,--tool=“,所以它会生成你想要的东西。

尝试:

代码语言:javascript
复制
git mergetool -t gvimdiff

当然你可以用你喜欢的合并工具来代替我的gvimdiff,meld也很棒…

票数 7
EN

Stack Overflow用户

发布于 2010-02-17 02:52:38

如果您从项目的子目录运行合并,git将为整个项目运行合并。但是,mergetool只能看到(和合并)工作目录下的文件。因此,如果发生这种情况,请确保您正在尝试从项目的顶级目录运行冲突解决方案。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1435754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档