微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何自动解决特定冲突?

如何解决如何自动解决特定冲突?

假设,我在提交中有一个文件

#include <stdio.h>

int main(){
    int x;

    return 0;
}

然后,从该提交创建 2 个分支。我们称它们为 branchAbranchB

branchA 中进行以下差异,添加一个新变量 yy

 #include <stdio.h>

 int main(){
     int x;
+    int yy;
     return 0;
 }

branchB 中,让我们将 x 变量重命名xx

 #include <stdio.h>

 int main(){
-    int x;
+    int xx;

     return 0;
 }

很明显,当我合并这两个分支时,我希望最终文件为:

#include <stdio.h>

int main(){
    int xx;
    int yy;
    return 0;
}

包括两个差异;重命名变量并添加新变量。

然而,当我想合并时,git 会产生这样的冲突。

#include <stdio.h>

int main(){
<<<<<<< HEAD
    int xx;
=======
    int x;
    int yy;
<<<<<<< branchA

    return 0;
}

这是我必须解决许多冲突的场景,据我所知,这并不是真正的冲突。我的意思是,它可以自动解决。我不想再在这种情况下手动解决冲突。我该如何处理这种情况?

总结一下,有没有办法自动解决那些可以自动解决的冲突?

解决方法

您是对的,不应该发生冲突。从逻辑的角度来看,这是两行不同的代码,只有在同一行代码发生更改时才会发生冲突。

不幸的是,当涉及到您给出的示例中的相邻行时,git 有一个例外。在这种情况下,git 会通知冲突。如果您使用其他版本控制工具(例如 SVN),则合并将成功且不会发生任何冲突。

git 这样做的原因尚不完全清楚。有人假设它被设计为一项功能,因此您将被迫在合并之前仔细检查您的代码,因为这些相邻的代码行可能以某种方式据称与上下文相关联。仅此而已。

但是,有一个工具可以帮助您“超越”这个“功能”,并使您能够在相邻行更改的情况下进行合并而不会发生冲突。您可以在这里找到它:https://github.com/paulaltin/git-subline-merge

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?