github - 来自主人的永久变异

时间:2014-01-15 04:08:00

标签: git

我正在寻找一种方法来管理主REPO的自定义偏差,主REPO具有所有人共享的公共代码,以及仅针对特定分支的单个自定义代码。

我通常使用“BRANCH”一词,因为我不确定这是否适用于这种情况。

要求这样做的原因是,我有一个标准应用程序可以部署在多个位置,但每个位置也可能有覆盖和特定于该安装的自定义代码。

由于所有分支共享95%的与公共代码相同的公共代码,因此我不希望在更新主代码或公共代码时单独维护每个分支,但由于每个分支都具有仅针对该分支的自定义代码分支,我还需要能够独立维护每个分支的自定义代码,并能够独立于主分支和其他分支克隆每个分支的代码。

使用GIT是否有一种干净的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以在git属性中设置合并策略。看看这里: http://git-scm.com/book/ch7-2.html#Merge-Strategies

以下是该部分的简短摘录:

  

如果项目中的某个分支发生了分歧,那么这很有用   专业,但您希望能够从中合并更改,   而你想忽略某些文件。假设您有数据库设置   文件名为database.xml,在两个分支中是不同的,而你   想要在你的其他分支中合并,而不会弄乱数据库   文件。您可以设置如下属性:

database.xml merge=ours

答案 1 :(得分:0)

如果您不必在专用于特定位置的分支(“位置分支”)中合并您正在进行的更改,那么您可以执行Jim Stewart commented,并且只需在master之上重新定位您的位置分支,每次master(包含公共代码)都会添加新的提交。

要在master之上修改所有“位置分支”,请参阅:


但是如果你确实需要合并一段时间,那么你可以在你的“位置”分支中声明一些内容过滤器驱动程序:参见“Best practice - Git + Build automation - Keeping configs separate”:这将允许你保留“数据文件”(具有特定于某个位置的数据的文件)模板文件分开(用于生成给定位置的实际值文件的文件)。
这样,每个位置的每个数据文件都不同,您可以双向合并而无需处理冲突。