维护使用不同版本API的git分支的策略?

维护使用不同版本API的git分支的策略?,git,merge,branch,Git,Merge,Branch,是否有一种有效的方法可以使用git来管理基于相同代码逻辑但支持不同API的两个分支?下面是一个具体的例子:假设我有一个repo,其中包含一个名为abc.py的Python 2文件。在分支py2上的提交A中,文件内容为: print 'A' 现在,我使用一个新的py3分支从A分支出来,并使用以下内容进行提交A3: print('A') 回到py2分支,有人对内容进行了新的提交B print 'A' print 'B' 在py3上,我合并py2以获取B更新并获取此合并冲突: <<&

是否有一种有效的方法可以使用
git
来管理基于相同代码逻辑但支持不同API的两个分支?下面是一个具体的例子:假设我有一个repo,其中包含一个名为
abc.py
的Python 2文件。在分支
py2
上的提交
A
中,文件内容为:

print 'A'
现在,我使用一个新的
py3
分支从
A
分支出来,并使用以下内容进行提交
A3

print('A')
回到
py2
分支,有人对内容进行了新的提交
B

print 'A'
print 'B'
py3
上,我合并
py2
以获取
B
更新并获取此合并冲突:

<<<<<<< HEAD
print('A')
=======
print 'A'
print 'B'
>>>>>>> 9d898
现在在
py2
中有commit
C
with

print 'A'
print 'B'
print 'C'
将其合并到
py3
中会产生冲突

<<<<<<< HEAD
print('A')
print('B')
=======
print 'A'
print 'B'
print 'C'
>>>>>>> 2c5a5
>2c5a5
因此,所有更改再次作为合并冲突重新引发

通过这种频繁地从
py2
合并到
py3
的方法,似乎每次合并都比前一次更加复杂和痛苦。有没有一种方法可以使用git来维护这样的两个分支,以便更好地合并以前的合并历史?如果不是这样,我想我最好尽量少做一些大的“追赶”合并,而不是频繁地进行小的合并,这通常是最好的方法

背景:我正在尝试将一个项目从Python2移植到Python3。如果我可以立即这样做,我会这样做并放弃对Python2的支持,但我不能立即这样做,因此我必须允许在Python2分支上进行开发,而Python3端口则在另一个分支中完成。我知道很多大型项目都是通过一个代码库同时支持2和3的阶段来实现的。因为一旦Python3工作,我就不需要支持Python2,所以我认为如果我只做一个单向端口,移植过程会更简单,但是从Python2移植更新的过程似乎比我最初想象的要困难


免责声明:我知道我的示例很琐碎,可以通过使用Python 2中的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>中的打印函数来解决,但并没有一个简单的解决。此外,我认为这个问题更广泛地适用于其他情况,而不仅仅是Python 2/3。

尽管听到这个问题可能令人失望,但我认为分支可能不是适合这项工作的工具。这些分支通常被称为“长期运行的分支”,通常在实践中永远不会像它们最初在理论上看起来那样有用

我建议更好的工具是像gpp、m4或(如果是c/c++项目)cpp这样的文本预处理器

<<<<<<< HEAD
print('A')
print('B')
=======
print 'A'
print 'B'
print 'C'
>>>>>>> 2c5a5