如何在git pull后解决冲突?
我必须在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.
所以我GOOGLE了它一下,发现人们使用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
,远程提交也创建了,重命名为vignette_generator_mashed.h
。如果你运行ls -l vision_problem_8.h*
,你可能会看到git为你保存的这个文件的多个版本。其中一个将是你的,另一个将是远程版本。您可以使用编辑器或任何您喜欢的工具来解决冲突的内容。完成后,git add
受影响的文件并提交完成合并。
如果您只是想使用远程提交的版本,那么您可以将未写入的副本移动到位,并将它移动到git add
。
关于合并工具,看看git help mergetool
。基本上,它会尝试运行每个包含的可能性直到它找到一个,或者使用一个已经明确配置的可能性。
如果您从项目的子目录运行合并,git将为您的整个项目运行合并。但是,mergetool只能查看(并合并)工作目录中或以下的文件。所以,如果发生这种情况,请确保您尝试从项目的*目录运行冲突解决方案。
我想你只是在你的命令行中忘记了“-t”开关。根据git帮助页面它代表“-t,--tool =”,所以它使你的意图。
尝试:
git mergetool -t gvimdiff
当然,你可以使用的,而不是我的gvimdiff您喜欢的合并工具,MELD是伟大的太...
如果有关于交换机“-t”实际内容的解释,这将是一个更好的答案确实,并*为什么*它解决了这个问题。 – Stewart 2018-02-07 11:39:55
@Stewart Done。感谢您的洞察! – mano2a0c40 2018-02-09 00:58:06
有关信息,请参阅还http://*.com/ questions/1064103/is-gits-auto-detection-scripted-or-it-it-within-some-git-executable(关于Git提议并搜索合并工具的方式) – VonC 2009-09-17 04:06:09
您可以看到安装/设置示例一个'mergetool'在这里:http://*.com/questions/825478/how-to-set-araxis-as-diff-merge-tool-for-msys-git – VonC 2009-09-17 04:09:18