在GIT中维护分支而不与主分支合并

3
在我的办公室,我们有一个自制的内容管理系统。我们已经逐步地设置了60个CMS实例。是的,我们是一家大公司,一个非政府组织。
我们大多数的办公室使用当前形式的CMS。有些办公室定制了颜色、字体和皮肤,另一些则构建了新功能,有时我们会将其纳入核心。我被委托更有效地管理源代码。
假设我正在管理“核心”,而我有A办公室和B办公室。 A办公室仅自定义了他们的颜色,但B办公室对核心进行了一些更改(不是很多),他们的代码与核心不同。我只想负责“核心”。开发新功能时,我希望(在接受后)将这些更改与其他办公室同步。
我考虑创建永远不会与主分支合并的分支。但我在主分支上进行的更改不能进入分支?我应该采用什么方法?需要注意什么?
1个回答

1

这是一种可能的方法。

对于在办公室分支中提交的更改,您希望将其应用于主分支,只需在主分支上挑选它们。如果您知道自己在做什么,还可以将一系列提交变基到主分支之上。

要反过来,合并确实是适当的;您将想要将主分支合并到办公室分支中,但不是反过来。您将检出要将核心更改应用于的办公室分支,并使用git merge master。这将尝试进行合并,但它只会触及办公室分支;主分支不会移动。

您还可以考虑提供默认颜色列表,并允许创建新文件以覆盖它们。您将在.gitignore中列出覆盖文件名,以便这些更改永远不会提交到Git存储库。您将能够更新主分支中的默认设置并将其合并到办公室分支中,但您只会在部署的副本上看到办公室颜色覆盖。


谢谢!这回答了我心中的一个基本疑问——主分支可以与其他分支合并。我一直以为只有其他分支可以合并到主分支。但是考虑到主分支也是一个分支,这是有道理的。那么如何设置一个分支永远不会与主分支合并呢?这可行吗? - Hari
你无法以任何有意义的方式强制执行它。Git不区分哪些提交来自哪个分支;分支只是指向提交的指针。如果两个分支指向相同的提交,你无法确定哪些祖先起源于哪个分支。只要不在主分支检出时进行git merge操作,你就没问题了。(如果你不希望其他人能够将更改推送到主分支,可以进行一些ACL类型的操作,但这超出了本问题的范围。) - cdhowie
顺便说一下,“master”只是一个随意取的名称,被认为是默认的分支名称。您可以重命名它,删除它或者对其进行任何操作。这没有进一步的含义。 - poke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接