防止分支推送到特定的远程

时间:2016-05-23 12:21:42

标签: git

所以这就是这笔交易。我们的项目有两个分支:

> git branch
> * master
>   development

我们还有两个遥控器:

> git remote
> heroku_live
> heroku_dev

因此,实际上每个分支都有自己分配的远程分支。 master分支推送到heroku_livedevelopment推送到heroku_dev,这样我们就可以拥有一个沙箱环​​境进行开发。我们知道我们可以在本地服务器上运行开发分支,但是有些情况我们希望向客户展示非现场功能,因此我们为什么会有heroku_dev

现在问题(或潜在问题)是某人可能意外地将开发分支推送到实时服务器,反之亦然。我们怎样才能防止这种情况发生?有没有办法限制分支机构可以推送哪些遥控器?

3 个答案:

答案 0 :(得分:1)

怎么样:

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而无需任何参数,从而防止出错。当然,您需要为项目的每个本地副本执行一次。

答案 1 :(得分:1)

我不知道heroku,但我想你配置heroku_live来部署分支masterheroku_dev来部署分支development吧?那么,如果有人将开发分支推送到远程development的分支heroku_live,那么最大的问题是什么?

如果这对你来说是一个问题而你想阻止它,你可以简单地向两个heroku遥控器添加一个pre-receive挂钩,它禁止推送到相应的其他分支。但是我不能阻止某人在服务器端使用钩子来git push heroko_live development:master。您可以在本地存储库中添加钩子来阻止这种情况,但这些钩子是devs repo的本地存储库,可以被忽略或禁用或者不被开发人员设置。

答案 2 :(得分:0)

在两个遥控器中添加适当的git预接收hooks。 谷歌那个'过滤分支'肯定会找到一个例子。