如何在git pull之后解决冲突?
git pull
后,我必须解决一些冲突。
$ 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.
所以我search了一下,发现有人在说使用git mergetool
。 但这是我得到的:
$ 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
版本覆盖所有的东西呢?
这不需要mergetool。 它可以很容易手动解决。
您的冲突是您的本地提交添加了一个文件, vision_problem_8.h
,远程提交也创build,由vignette_generator_mashed.h
重命名。 如果你运行ls -l vision_problem_8.h*
你可能会看到git为你保存的这个文件的多个版本。 其中一个将是你的,另一个将是远程版本。 您可以使用编辑器或任何您喜欢的工具来解决冲突的内容。 完成后, git add
受影响的文件并提交以完成合并。
如果你只是想使用远程提交的版本,那么你可以将你没有写入的副本移动到位,并git add
它。
对于合并工具,看看git help mergetool
。 基本上,它会尝试运行每个包含的可能性,直到它find一个,或者使用一个你明确configuration的。
我想你只是忘记了“-t”在你的命令行切换。 尝试:
git mergetool -t gvimdiff
当然,你可以使用你最喜欢的合并工具,而不是我的gvimdiff,融合是伟大的… … –
如果你从你的项目的子目录运行你的合并,git会运行整个项目的合并。 但是,mergetool只能看到(和合并)在工作目录下的文件。 所以,如果发生这种情况,请确保您尝试从项目的顶级目录运行冲突解决scheme。