git的告诉我,我合并冲突,但也告诉我,没有文件需要合并(git tells me that I M

2019-08-18 05:58发布

我公司承诺在该分支的一些变化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和它输出这样的:

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

我很困惑,如何解决这个问题,我想解决这个问题的最简单的方式可能的话,我真的不关心,如果我失去了从分支新的信息,但我想知道什么地方出了错,为什么我可以” T选用合并工具。

它只是似乎不可思议,我认为我有一个合并冲突,但没有文件需要合并。

Answer 1:

我觉得你的合并工具命令是错误的。 应该

$ git mergetool

要么

$ git mergetool --tool=kdiff3

如果您遇到了Git的命令,你可以随时检查手册( git mergetool --help )。

更多信息: https://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html



Answer 2:

我试过了

git mergetool .

似乎工作。



Answer 3:

我即使只是运行在正确的命令此问题:

$ git mergetool

它可能有一些做与具有rerere开启(见这个链接[编辑:链接不再工作])

我通过创建两个别名解决了这个问题.gitconfig ,它揭开序幕合并工具为每个冲突的文件:

添加到您的.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;博士最后要求,这里是什么这样做一个简要说明:

  • git ls-files -u :有冲突的合并尝试后,这列出了所有未合并的文件,一些无关紧要的信息和重复一起; 如果合并后立即运行,这是几乎所有有冲突的文件
  • | cut -f 2 | cut -f 2切出该输出的第二字段,它基本上是文件路径
  • | sort -u | sort -u消除重复
  • | xargs git mergetool | 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



文章来源: git tells me that I Merge conflict, but also tells me that no files need merging