如何忽略合并冲突?

6
我遇到了下一个合并冲突:
<<<<<<< Updated upstream
    my( $c, $name ) =  (shift,shift);
  my %name =  defined $name ? ( name => $name ) : ();

||||||| merged common ancestors
    my( $c ) =  shift;
=======
    my( $c, $name ) =  (shift,shift);

  my %name =  defined $name ? ( name => $name ) : ();
>>>>>>> Stashed changes

<<<<<<< Updated upstream
    return $c->render_to_string( 'control/toggle', id => "toggle$id", %name, @_ );
||||||| merged common ancestors
  return $c->render_to_string( 'control/toggle', @_, id => "toggle$id" );
=======
    return $c->render_to_string( 'control/toggle', id => "toggle$id",  %name,  @_ );
>>>>>>> Stashed changes

如果只有空格的更改,是否有忽略此类冲突的选项?就像-w -b选项一样。


我甚至无法看到第一个冲突中的空格差异(在第二个冲突中很明显:逗号空格空格百分号name),但是,没有这样的选项。 - torek
@torek:在第一个例子中有空行差异。你认为这样的选项有用吗? - Eugen Konkov
鉴于Git有一些空格处理功能(大多数情况下是在行尾),如果您将其概括并使其能够与git applygit merge一起使用,这将非常有用。 - torek
2个回答

14

冲突不能被忽视,因为这意味着有问题出现了,你必须告诉Git你已经解决了冲突。

如果你真的想保留文件原样,可以删除冲突差异行,然后git add/git commit那些出现冲突的文件,这样你就可以保留文件的所有行。

否则,如果你想保留特定版本(要么是"theirs",即尝试合并到本地代码库的版本,要么是"ours",即你的代码库),你可以使用:

git checkout --ours my/file

或者

git checkout --theirs my/file

不要忘记提交文件,这样git就不会处于奇怪的冲突模式。


如果我们忽略空格,那么就没有冲突了。所以没什么问题,对吧? - Eugen Konkov
1
空格是导致冲突的原因。由你选择使用哪一行。 - evolutionxbox

4
如果您有未合并的路径,最简单的方法是使用git merge --abort中止合并。这样,您的代码将与尝试与其他分支合并之前相同...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接