我需要解决git中的冲突,但作为一个新手,不确定最有效的方法是什么。
这是我的情况:
我在 master
分支上,并需要提交并推送所有更改。
$ git pull:
error: Your local changes to 'foo.cpp' would be overwritten by merge. Aborting. Please, commit your changes or stash them before you can merge.
有几个有冲突的文件。当然,我在网上搜索了一下:
不幸的是,两种解决方案都不太好。我可以使用stash(取diff并将其清除)和手动解决,但想要使用 git mergetool
或 SourceTree。
这是我尝试过的:
$ git config merge.conflictstyle diff3
$ git mergetool
merge tool candidates: tortoisemerge emerge vimdiff
No files need merging
$ git mergetool -t vimdiff
No files need merging
$ git mergetool -t vimdiff foo
foo.cpp: file does not need merging
$ git diff foo.cpp
diff --git a/foo.cpp b/foo.cpp
index xxxxxx yyyyy
--- a/foo.cpp
+++ b/foo.cpp
@@ .....
..... <omitted>
$
我不确定问题出在哪里。 git mergetool
的功能有误,它说不需要合并,但实际上显示了差异,并且git pull
报告冲突。
Q1) 如何使用mergetool
进行交互式的冲突解决或合并?
Q2) 是否可以使用SourceTree来解决冲突?我尝试过,但它也不直观。
谢谢!
config
命令是git config merge.tool diff3
。 - GoZoner