防止git merge到master分支

时间:2011-11-17 00:09:08

标签: git git-merge git-pull

我正在使用分支来创建和部署out平台的自定义实例。这些实例通常从“主”分支开始,稍微定制,部署到测试和生产中,最后归档。

如果将新功能或错误修复添加到主服务器中,我希望能够将它们提取/合并到我的项目实例(分支)中,但我几乎不想将更改从分支合并到主服务器。最近这种情况发生了错误,并造成了一些严重的问题。更新存储库的git pull将所有内容合并到主分支中,然后被推回到主repo中。

有没有简单的方法可以禁止合并回主人?或者至少需要一些--force标志?

3 个答案:

答案 0 :(得分:2)

您可以通过禁止任何人推送主分支来确保不与其他分支合并到主服务器。有权威的人可以做到这一点。 Gitolite允许您精细调整对分支的访问。除非您是特定用户,否则您也可以编写自己的服务器端挂钩并拒绝更新主分支。

答案 1 :(得分:1)

Git非常乐意使用多个远程存储库。

我建议为每个自定义实例使用一个远程存储库。这不会改变您的工作流程,因为Git可以将任何两个分支合并在一起而不管其来源。

要更新“自定义实例”,其中包含“主遥控器”中的错误修复程序,您需要输入类似

的内容
git checkout <custom-branch>
git fetch main
git merge main/master

其中main是您所指的远程存储库master(我更改了名称以避免分支和远程之间的混淆)

对于本地分支机构,指定main作为远程跟踪分支,而是指定特定于实例的远程分支。即每个自定义实例一个远程存储库。

要将更改推送到自定义实例,请使用

git push

在极少数情况下,您需要将更改上游推送到“主”分支,请使用

git push main

答案 2 :(得分:-1)

如果您只是想避免合并到master中,可以使用预合并挂钩来禁止它。