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

Git 不允许合并到与您的分支不同的分支?,git,merge,branch,Git,Merge,Branch,我们通过以下方式配置回购协议: master --> project_branch ----> branch_of_project_branch --> branch_of_master 也就是说,我们有很多项目都是主分支的分支 当我们对master进行更改时,我们在master的一个分支中进行这些更改,然后将它们合并回master,然后从master拉入每个项目分支 当我们对项目进行更改时,我们在该项目的分支中进行这些更改,然后将它们合并回该项目分支 有没有办法配置git,

我们通过以下方式配置回购协议:

master
--> project_branch
----> branch_of_project_branch
--> branch_of_master
也就是说,我们有很多项目都是主分支的分支

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

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

有没有办法配置git,这样我们就不允许将更改从一个分支合并到一个非其来源的分支?也就是说,在上面的示例中,我希望禁止将\u项目\u分支的分支\u合并到master中,或者类似地,禁止将\u master的分支\u合并到项目\u分支中

有没有办法配置git,这样我们就不允许将更改从一个分支合并到一个非其来源的分支

没有

Git中的分支名称没有意义,彼此之间也没有关系。每个Git存储库都有自己的分支名称:如果我克隆了您的存储库,我可以将我的分支更改为maestro而不是master,dervish而不是develop,等等。然而,我仍然可以发送您的Git提交,并告诉您的Git使用您的名字或我的名字

您在自己的Git存储库中拥有的每个分支名称都允许您设置另一个名称(Git称之为上游)以与该分支关联,但此上游设置是本地的,主要是一种方便的功能。Git的其他部分,如push.default的默认设置,则鼓励人们将origin/master用作本地名为master的分支的上游,从而鼓励合理使用分支名称,但这并不是在任何地方强制执行的:任何人都可以在任何时候覆盖任何分支

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

当您有一台托管Git存储库的服务器时,该服务器可以接受或拒绝Git推送操作。您可以编写自己的脚本来检查传入的推送请求。这些脚本采用钩子的形式,在本例中是预接收和更新。但是这些钩子只能获得一些信息:

传入提交的哈希ID; 另一个Git要求您的Git使用的名称;和 当前与该名称关联的哈希ID。 执行git推送操作的人可以选择任意名称发送到git,要求git使用,因此您在这里看到的分支名称不一定是他们在git中拥有的分支名称。但是您不必关心他们在Git中的分支名称:您的Git无论如何都不会看到他们的分支名称。Git只看到您自己的分支名称和提交哈希


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

谢谢您的详细解释。但愿情况不是这样,但我想我们只需要格外小心我们所承诺的分支机构。