Git 防止分支推送到特定远程服务器

Git 防止分支推送到特定远程服务器,git,Git,这就是交易。我们在项目中有两个分支机构: > git branch > * master > development 我们还有两个遥控器: > git remote > heroku_live > heroku_dev 因此,实际上每个分支都有自己的远程分配master分支推送到heroku\u live和development推送到heroku\u dev,这允许我们有一个用于开发的沙箱环境。我们知道,我们可以在本地服务器上运行开发分支,但是在有些情

这就是交易。我们在项目中有两个分支机构:

> git branch
> * master
>   development
我们还有两个遥控器:

> git remote
> heroku_live
> heroku_dev
因此,实际上每个分支都有自己的远程分配
master
分支推送到
heroku\u live
development
推送到
heroku\u dev
,这允许我们有一个用于开发的沙箱环境。我们知道,我们可以在本地服务器上运行开发分支,但是在有些情况下,我们希望在场外向客户演示功能,因此我们有一个
heroku\u dev


现在这里的问题(或潜在问题)是有人可能会意外地将开发分支推到实时服务器上,反之亦然。我们怎样才能防止这种情况发生?是否有办法限制分支可以推送到哪个远程?

在两个远程中添加适当的git pre-receive。 谷歌表示,使用“分支上的过滤器”肯定会为您找到一个例子。

如何:

git checkout development
git branch --set-upstream-to heroku_dev
git checkout master
git branch --set-upstream-to heroku_live
git config push.default upstream

这将设置
git push
以执行您想要的操作,即将当前分支推送到定义的远程分支,这样您就可以使用
git push
,而无需任何参数,从而防止出错。当然,您需要为项目的每个本地副本执行一次。

我不知道heroku,但我想您已经配置了
heroku\u live
来部署分支
master
heroku\u dev
来部署分支
开发
对吗?那么,如果有人将远程heroku_live的开发分支推到另一个分支,那么最大的问题是什么呢


如果这对您来说是一个问题,并且您想防止出现这种情况,您可以简单地向两个heroku Remote添加一个
预接收
钩子,该钩子不允许推送到相应的其他分支。但你们不能阻止某人使用服务器端的钩子进行git-push-heroko_live development:master。您可以向本地存储库添加钩子来防止这种情况发生,但这些钩子是devs repo的本地存储库,可以被忽略、禁用或不由开发人员设置。

这不会有帮助,是吗?如果您像git-push-heroko_-live-development:master那样推送,您仍然可以这样做,并且预接收钩子无法阻止这一点,因为它不知道您推送的本地分支。确定。但我不明白那会是个问题。