颠覆背景:Git的合并主分支 - 冲突(从Subversion背景的)
我们从过渡到Subversion
Git
。
我们使用Subversion trunk
作为我们的“黄金副本”,创建长期运行的功能分支,我们将合并trunk
多次分支。
最后,当功能完成后,我们会将分支合并回trunk
。
当我们这样做时,如果在trunk
中修改了Bar.java
,但我们从未在分支中修改它,我们将永远不会在Bar.java
上发生合并冲突。
我认为这是因为Subversion
有一个概念svn:mergeinfo
,并知道合并的历史和Bar.java
从未在分支中修改。
SVN分公司Maintenence图:
Git的行为:
现在我们已经过渡到Git
,我们正在合并主分支越来越冲突,即使我们没有改变分支中的Bar.java
!
我相信这是因为Git不会有svn:mergeinfo
相同的概念,并没有持续跟踪Bar.java
变化从master
走了过来,在合并的事实
的Git图(SHOWS ISSUE):
问:
有没有什么办法可以继续使用我们在Subversion
(频繁合并中继到分支)中使用的相同方法,而不会在Git
中发生冲突?
有没有办法实现一个等效的svn:mergeinfo
,以便Git知道一个文件只在master
更改,并且从未在branch
中更改,并自动合并?
虽然我所示的例子是微不足道的(一个文件),实事求是,我们有许多开发人员并行工作,并最终处理大量的文件发生冲突,并在行为从svn
到git
这种差异是导致我们很多的痛苦。
非常感谢!有没有办法查看'svn:mergeinfo'的Git等价物?我会尝试削减一个干净的Git回购和试验......我们确实有很多新开发Git的开发者和每个使用不同Git客户端的开发者,所以我不能肯定地说如果有人做了“rebase”或者任何修改过的东西历史上的主人。 –
延长了答案 –
谢谢你,我接受你的回答,确认你提供的关于合并信息的一切都是正确的,当你处理干净的Git回购时。我们必须在团队内部针对不同的git客户端或行结尾或制表符v空间中做错事情。 –