我们通过以下方式配置了仓库:
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
。
答案 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 push
和pre-receive
。但是这些钩子只能获得一些信息:
执行update
操作的人可以选择一个任意名称发送给您的Git,要求您的Git使用,因此您在此处看到的分支名称不一定是它们的分支名称 在他们的 Git中。但是您不必关心他们在其Git中拥有什么分支名称:无论如何,您的Git永远不会看到其分支名称。您的Git仅看到您自己的分支名称和提交哈希。
最重要的是:在所有Git存储库中共享公用哈希。分支名称不是。同时:每个用户的Git存储库对该用户都是私有的。您无法控制其他人对其私有Git存储库的操作。您只能控制自己对自己的Git存储库的操作。