我有一个针对多个平台的项目。我必须更改不同平台的UI代码,同时保持核心类相同。为了达到这个目的,我想为不同的平台制作git分支。
鉴于上述情况我的要求是,如果我在核心类中进行更改,它应该反映在所有git分支中。
如何实现这一目标?
或者还有其他工作流程可以达到同样的效果吗?
答案 0 :(得分:5)
git rebase
您可以通过git rebase
代替git merge
处理您的特定平台。在这种情况下,您将能够更改核心分支,而不是更改其上的其他分支,从而在核心上应用特定于平台的修改。
制作平台分支
git checkout master
git checkout -b platform1
git checkout master
git checkout -b platform2
进行核心修改
git checkout master
# make modification
git commit
进行平台修改
git checkout platform2
# make modification
git commit
导入平台中的核心更改
git checkout platform1
git rebase master
git checkout platform2
git rebase master
git merge
如git merge manual中所述,也可以git merge
使用strategy
选项。
git checkout platform2
git merge -s recursive -X ours master
如果发生冲突,这将始终选择特定于平台的更改。
答案 1 :(得分:-1)
git中没有这样的东西。
如果您真的在使用git解决方案,我建议创建一个“通用”分支,并让所有分支合并。
始终将对公共代码的更改提交到“common”分支并将其合并到平台分支,这样您就可以防止冲突并合并您不想要的东西(或者您可以选择。)
此外,我认为您可以在平台分支上将commons文件设置为只读,以防止修改它而不会被打耳机。
缺点:乏味,但应该工作。
或者,为每个平台使用不同的子目录,让构建系统为每个构建提供正确的文件。
缺点:你不会像git分支那样得到合并。