不允许合并到与分支不同的分支?

时间:2020-03-20 15:48:47

标签: git merge branch

我们通过以下方式配置了仓库:

master
--> project_branch
----> branch_of_project_branch
--> branch_of_master

IE,我们有一堆项目都是master分支的分支。

对master进行更改时,我们在master的分支中进行了这些更改,然后将它们合并回master,然后从master拉入每个项目分支。

当我们对项目进行更改时,我们会在该项目的分支中进行更改,然后将其合并回该项目分支中。

是否有任何配置git的方法,以便我们不允许将更改从分支合并到不是其起源的分支中? IE,在上面的示例中,我想禁止branch_of_project_branch合并为master,或者同样地,禁止branch_of_master合并为project_branch

1 个答案:

答案 0 :(得分:1)

是否可以通过任何方式配置git,以便我们不允许将分支中的更改合并到不是其起源的分支中?

否。

Git中的分支名称没有任何意义,并且彼此之间没有任何关系。每个Git储存库都有自己的分支名称:如果克隆您的储存库,则可以将我的储存库更改为具有分支maestro而不是master,分支dervish而不是{ {1}},依此类推。但是,我仍然可以发送您的Git提交,并告诉您的Git使用您的名字或我的名字。

您在自己的Git存储库中拥有的每个分支名称​​确实允许您设置另一个名称(Git称为上游)来与该分支相关联,但这上游设置是本地的,主要是便利功能。 Git的其他部分(例如默认设置develop)然后鼓励人们使用push.default作为本地名称为origin/master的分支的上游,因此令人鼓舞 em>明智地使用分支名称,但并未在任何地方强制使用:任何人都可以随时覆盖其中的任何一个。

在任何情况下,分支名称都不重要。在Git中重要的是 commits 。分支名称仅用于查找提交。

拥有托管Git存储库的服务器时,该服务器可以接受或拒绝master操作。您可以编写自己的脚本来检查传入的推送请求。这些脚本采用 hooks 的形式,在这种情况下为git pushpre-receive。但是这些钩子只能获得一些信息:

  • 传入提交的哈希ID;
  • 另一个Git要求您的Git使用的名称;和
  • 当前与该名称关联的哈希ID。

执行update操作的人可以选择一个任意名称发送给您的Git,要求您的Git使用,因此您在此处看到的分支名称不一定是它们的分支名称​​ 他们的 Git中。但是您不必关心他们在其Git中拥有什么分支名称:无论如何,您的Git永远不会看到分支名称。您的Git仅看到您自己的分支名称和提交哈希。

最重要的是:在所有Git存储库中共享公用哈希。分支名称不是。同时:每个用户的Git存储库对该用户都是私有的。您无法控制其他人对其私有Git存储库的操作。您只能控制自己对自己的Git存储库的操作。