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

在GIT中维护分支而不与master合并,git,merge,branch,master,Git,Merge,Branch,Master,在我的办公室,我们有一个自主开发的内容管理系统。缓慢但稳定地,我们已经设置了60个CMS实例。是的,我们是一家大公司;非政府组织 我们的大多数办公室使用CMS的当前形式。一些办公室定制了颜色、字体,基本上是皮肤。有些人构建新的功能,有时我们会将这些功能引入核心。我的任务是更有效地管理源代码 比方说,我在管理“核心”,我有办公室“A”和办公室“B”。Office A只定制颜色,但是Office B对核心做了一些更改(不是很多),并且它们的代码与核心不同。我只想对“核心”负责。当我开发一个新功能时,

在我的办公室,我们有一个自主开发的内容管理系统。缓慢但稳定地,我们已经设置了60个CMS实例。是的,我们是一家大公司;非政府组织

我们的大多数办公室使用CMS的当前形式。一些办公室定制了颜色、字体,基本上是皮肤。有些人构建新的功能,有时我们会将这些功能引入核心。我的任务是更有效地管理源代码

比方说,我在管理“核心”,我有办公室“A”和办公室“B”。Office A只定制颜色,但是Office B对核心做了一些更改(不是很多),并且它们的代码与核心不同。我只想对“核心”负责。当我开发一个新功能时,我想(在接受后)将这些更改与其他办公室同步


我想创建一个永远不会与主节点合并的分支。但是我在Master上所做的更改不能转到分支??我应该采取什么方法,应该注意什么?

这是一种可能的方法

对于要应用于master的office分支中的提交,只需在master之上选择它们。如果您知道自己在做什么,还可以在master上重新设置一系列提交的基础

换言之,合并确实是恰当的;您将希望将master合并到office分支中,但不是相反。您可以签出要将核心更改应用到的office分支,以及
git merge master
。这将尝试合并,但只会触及office分支;不会移动主分支


您可能还想考虑提供一个默认的颜色列表,并允许创建一个新文件来重写这些文件。您可以在

.gitignore
中列出覆盖文件名,这样这些更改就不会提交到Git存储库。您可以在master中更新默认值并将其合并到office分支中,但除了在已部署的副本上,您永远不会看到office颜色覆盖。

谢谢!这回答了我心中的一个基本疑问——大师可以与一个分支合并。我的假设是只有分支可以与Master合并。考虑到即使是大师也是一个分支,这也是有道理的。如何将分支设置为从不与主分支合并?有可能吗?你不能用任何有意义的方式来强制执行。Git不区分哪些提交来自哪些分支;分支只是指向提交的指针。如果两个分支指向同一个提交,则无法区分哪个祖先起源于哪个分支。只要在master被签出时不要
git merge
,你就会没事的。(如果您不希望其他人能够将更改推送到master,那么您可以执行一些ACL类型的操作,但这有点超出了这个问题的范围。)顺便说一句,
master
只是一个同意作为默认分支名称的随机名称。你可以重命名,删除它,或者做任何你想用它。它没有进一步的意义。