git中是否有工作流在多个分支中共享同一个文件?

时间:2011-12-16 08:43:50

标签: git

我有一个针对多个平台的项目。我必须更改不同平台的UI代码,同时保持核心类相同。为了达到这个目的,我想为不同的平台制作git分支。

鉴于上述情况我的要求是,如果我在核心类中进行更改,它应该反映在所有git分支中。

如何实现这一目标?

或者还有其他工作流程可以达到同样的效果吗?

2 个答案:

答案 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分支那样得到合并。