Tim*_*Tim 52 git conflict git-pull git-merge
我必须解决一些冲突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.
Run Code Online (Sandbox Code Playgroud)
所以我用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
Run Code Online (Sandbox Code Playgroud)
那么这是否意味着我必须安装一些东西?
如果我只想让版本git pull覆盖所有内容怎么办?
Phi*_*ler 25
你不需要mergetool.它可以很容易地手动解决.
您的冲突是您的本地提交vision_problem_8.h通过重命名添加了一个文件,也创建了一个远程提交vignette_generator_mashed.h.如果你运行,ls -l vision_problem_8.h*你可能会看到git为你保留的这个文件的多个版本.其中一个将是你的,另一个将是远程版本.您可以使用编辑器或任何您喜欢的工具来解决冲突的内容.完成后,git add受影响的文件并提交以完成合并.
如果您只想使用远程提交的版本,那么您只需移动未写入的副本即可git add.
关于合并工具,请看一下git help mergetool.基本上,它会尝试运行每个包含的可能性,直到找到一个,或使用您已明确配置的可能性.
我想你只是忘了命令行中的"-t"开关.根据git帮助页面,它代表"-t, - tool =",因此它可以实现您的目的.
尝试:
git mergetool -t gvimdiff
Run Code Online (Sandbox Code Playgroud)
当然你可以使用你喜欢的合并工具而不是我的gvimdiff,meld也很棒......
小智 5
如果从项目的子目录运行合并,git将为整个项目运行合并.但是,mergetool只能查看(和合并)工作目录中或下面的文件.因此,如果出现这种情况,请确保您尝试从项目的顶级目录运行冲突解决方案.
如果我只是想要 git pull 的版本覆盖所有内容怎么办? 如果你想要这样,你应该使用:
git fetch
git reset --hard origin/your-branch-name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95991 次 |
| 最近记录: |