两个git分支在文件末尾定义函数;如何防止git尝试将它们合并(这会产生冲突)?

两个git分支在文件末尾定义函数;如何防止git尝试将它们合并(这会产生冲突)?,git,Git,假设我有一个文件hello.php,它定义了函数a() 现在,分支“b”在文件hello.php的末尾定义了函数b() 同时,在hello.php结尾处的分支主机上进行了进一步的开发:定义了函数c() 在这一点上,我有两个分支: 定义函数a()和c()的master 定义函数a()和b()的分支b 现在,当我在master中时,我想将b合并到其中,git尝试将函数b()和c()组合起来,并创建一系列冲突(对于长函数来说,这尤其难以解决)。在这种情况下,我根本不想将它们组合在一起,而且,如果在

假设我有一个文件hello.php,它定义了函数a()

现在,分支“b”在文件hello.php的末尾定义了函数b()

同时,在hello.php结尾处的分支主机上进行了进一步的开发:定义了函数c()

在这一点上,我有两个分支:

  • 定义函数a()和c()的master
  • 定义函数a()和b()的分支b
现在,当我在master中时,我想将b合并到其中,git尝试将函数b()和c()组合起来,并创建一系列冲突(对于长函数来说,这尤其难以解决)。在这种情况下,我根本不想将它们组合在一起,而且,如果在b()之前定义c(),或者在c()之前定义b(),这其实并不重要

有没有办法告诉git,当在文件末尾进行修改时,不管前面发生了什么,它们都应该放在末尾,这样合并分支b中的主节点就会产生函数a(),函数b(),函数c();将分支b合并到主分支会产生函数a()、函数c()、函数b()

谢谢


Albert

不。这种情况下,您只需手动解决冲突

但是,您可以尝试打开3向冲突显示,这会使问题更容易解决:

$ git config --global merge.conflictstyle diff3

当您将一个分支拉入另一个分支时,您可以选择一个合并工具并选择应该使用哪些分支代码段

我会:

Git checkout master
Git pull origin branch_b
Git mergetool
这应该允许您选择“左”或“右”或两者来确定要使用的代码


如果到目前为止您仍有问题,我将相应地进行更新。

我发现diff3和merge工具对我来说有点太复杂了。相反,我使用以下技术:在文件末尾添加占位符。例如,在主分支中,php文件可能以以下结尾:

...
/* new code after this line */
/* new code before this line */
现在,两个新分支可能各自在这些行之间添加一些新代码。当每个新分支实际合并到master中时,我将首先将我的新分支合并到master中,然后将
/*新代码移到这一行之后*/
行到文件末尾最后一行的上方

然后,我可以合并我的另一个分支,它也定义了一些新代码,等等

结果是git没有尝试将新代码组合在一起,而是按照合并分支的顺序将新代码干净地放在文件末尾