这种合并冲突意味着什么以及如何解决它?

时间:2016-08-26 14:29:06

标签: git git-merge merge-conflict-resolution

我正在使用git。并恢复隐藏的变化,但得到CONFLICT

$ gn
# On branch feature/improve_list
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#1  modified:   ../lib/Devel/DebugHooks.pm
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add <file>..." to mark resolution)
#
#2  both modified:   ../lib/Devel/DebugHooks/Commands.pm
#

冲突内容:

$gd 2
index e043e7f,9cb31e5..0000000
--- a/lib/Devel/DebugHooks/Commands.pm
+++ b/lib/Devel/DebugHooks/Commands.pm
@@@ -130,12 -130,12 +130,21 @@@ sub _list 
         else {
             printf $DB::OUT  DB::can_break( $file, $line ) ? ' x' : '  ';
         }
++<<<<<<< Updated upstream


         # Print source line number
         print $DB::OUT "$line:";


++=======
++
++
++       # Print source line number
++       print $DB::OUT "$line:";
++
++
++>>>>>>> Stashed changes
         # Print source line
         (my $sl =  $source->[ $line ]) =~ s/\t/    /g; #/
         $sl =  " $sl"   if length $sl > 1; # $sl(source line) have at least "\n"

为什么我会陷入冲突?对我来说一切都是一样的 如何编辑此文件以解决此冲突(我不明白要保留什么,删除什么以及有趣的评论意味着什么)
我应该使用哪些git命令将此CONFLICT标记为已解决?

2 个答案:

答案 0 :(得分:0)

由于使用的间距不同,存在冲突。与更新的文件相比,您的存储文件在行前面的空格更少。

  

如何编辑此文件以解决此冲突

您可以使用自己喜欢的文本编辑器打开文件,并通过选择要保留的部分进行相应编辑。

  

我应该使用哪些git命令将此CONFLICT标记为已解决?

修复文件后,您不需要任何特定命令,因为尚未提交隐藏的更改。因此,您无需发出任何命令来解决冲突。

答案 1 :(得分:0)

它看起来像空白区别,可能在行终止符中。

有关如何配置它来处理此类事情的详细信息,请参阅the git documentation for line endings。(这取决于您使用的是哪个平台)。

根据平台的不同,您可能需要:

Linux, etc:    git config core.autocrlf input
Windows:       git config core.autocrlf true

这可以防止将来发生这类问题。

要修复当前问题,请运行适合您平台的这些配置命令,然后选择其中一组更改(简单方法:删除所有以“++”开头的行)。然后使用:

git add ../lib/Devel/DebugHooks/Commands.pm

将冲突标记为已解决。他们可以提交更改,也可以继续使用它们。

当你最终提交时,如果你在上面运行相关的“git config”命令,git应该为你修复行终止符。