我们正在处理不同分支上的文件。
合并后,最终代码变得错误,即使它在合并之前在每个分支上都能正常工作。
我使用此处提供的接受答案作为分支/合并策略:https://stackoverflow.com/a/5602109/4746692。
我有缺失的一步吗?
我在master分支上有文件。 示例代码
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(b);
}
}
我从这里扩展到newBranch。
git checkout -b newBranch
在newBranch上,我编辑代码以打印 a 的值。
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(b);
System.out.println(a);
}
}
在使用master时,其他一些开发人员会删除声明变量 a 的语句。
git checkout master
public class Test {
public static void main(String[] args) {
int b = 2;
System.out.println(b);
}
}
当我将newBranch合并回master时,变量 a 的声明将会丢失,并且print语句将抛出错误。请注意,此合并不会产生任何合并冲突。
git checkout master
git pull origin master
git merge --no-ff newBranch
合并的代码看起来像
public class Test {
public static void main(String[] args) {
int b = 2;
System.out.println(b);
System.out.println(a);
}
}
将master合并到newBranch并在将其合并回master之前进行测试是否是一个好习惯?
答案 0 :(得分:1)
“将master合并到newBranch并在将其合并回master之前进行测试是不错的做法?”
是。在这种情况下,代码在之后不起作用是完全合理的。毕竟,有人删除了一些代码,并添加了一段代码。更改不在同一位置,因此没有冲突。 Git不是编译器,也不知道更改之间的关系,因此应用了这两个更改,您必须手动解决此问题。
答案 1 :(得分:0)
您始终可以使用git rerere
将合并结果应用于所有givenm分支。
git rerere
只记录您解决冲突的方式,然后当不同分支上出现相同的冲突时,它只会应用您创建的补丁来解决所有冲突。