我在分支new
中进行了一些更改。
我结帐到master
。
当我尝试合并时:
$ git merge new
Auto-merging js/site.js
CONFLICT (content): Merge conflict in js/site.js
Automatic merge failed; fix conflicts and then commit the result.
所以我安装了kdiff3并配置了我的配置文件,当我尝试使用mergetools时,我得到了:
$ git mergetool kdiff3
No files need merging
我跑了一个差异并输出了这个:
diff --cc js/site.js
index 8c17d62,7955b13..0000000
--- a/js/site.js
+++ b/js/site.js
@@@ -72,4 -81,18 +81,22 @@@ function doSmallScreen()
$(document).ready(function () {
calculateScreen();
- });
++<<<<<<< HEAD
++});
++=======
+ $(window).resize(function () {
+ delay(function () {
+ calculateScreen();
+ }, 500);
+ });
+ });
+
+
+ var delay = (function () {
+ var timer = 0;
+ return function (callback, ms) {
+ clearTimeout(timer);
+ timer = setTimeout(callback, ms);
+ };
-})();
++})();
++>>>>>>> new
我很困惑如何解决这个问题,我想以最简单的方式解决这个问题,我真的不在乎我是否丢失了来自分支机构的新信息,但我想了解出了什么问题以及为什么我无法使用合并工具。
对我来说,我有一个合并冲突似乎很奇怪但是没有文件需要合并。
答案 0 :(得分:9)
我试过
git mergetool .
似乎工作。
答案 1 :(得分:6)
即使只是运行正确的命令,我也遇到了这个问题:
$ git mergetool
这可能与启用rerere有关(请参阅此链接[编辑:链接不再有效])
我通过在.gitconfig
中创建了两个别名来解决了这个问题,它为每个冲突文件启动了mergetool:
将此添加到.gitconfig
# List conflicted files
list-conflicts = !git ls-files -u | cut -f 2 | sort -u
# Force mergetool to recognize conflicts
force-mergetool = !git list-conflicts | xargs git mergetool
tl; dr 根据要求,以下是对此的简要说明:
git ls-files -u
:在有冲突的合并尝试之后,这会列出所有未合并的文件,以及一些无关的信息和重复;如果在合并后立即运行,这基本上就是所有有冲突的文件| cut -f 2
会删除此输出的第二个字段,实际上是文件路径| sort -u
消除重复| xargs git mergetool
将此文件列表导入mergetool
命令,启动GUI合并工具(假设您有一个设置)因此,如果您只想查看列出的文件,则可以运行第一个命令。第二个命令会将这些内容整合到您的合并工具中(如果您愿意,可以使用merge
代替mergetool
。)
如果您想在添加别名之前自行尝试,可以通过命令行运行以下两个命令之一:
git ls-files -u | cut -f 2 | sort -u
git ls-files -u | cut -f 2 | sort -u | xargs git mergetool
答案 2 :(得分:5)
我认为你的mergetool命令是错误的。应该是
$ git mergetool
或者
$ git mergetool --tool=kdiff3
如果您遇到git命令,可以随时查看手册(git mergetool --help
)。
更多信息:https://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html