所以这就是这笔交易。我们的项目有两个分支:
> git branch
> * master
> development
我们还有两个遥控器:
> git remote
> heroku_live
> heroku_dev
因此,实际上每个分支都有自己分配的远程分支。 master
分支推送到heroku_live
,development
推送到heroku_dev
,这样我们就可以拥有一个沙箱环境进行开发。我们知道我们可以在本地服务器上运行开发分支,但是有些情况我们希望向客户展示非现场功能,因此我们为什么会有heroku_dev
。
现在问题(或潜在问题)是某人可能意外地将开发分支推送到实时服务器,反之亦然。我们怎样才能防止这种情况发生?有没有办法限制分支机构可以推送哪些遥控器?
答案 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
来部署分支master
和heroku_dev
来部署分支development
吧?那么,如果有人将开发分支推送到远程development
的分支heroku_live
,那么最大的问题是什么?
如果这对你来说是一个问题而你想阻止它,你可以简单地向两个heroku遥控器添加一个pre-receive
挂钩,它禁止推送到相应的其他分支。但是我不能阻止某人在服务器端使用钩子来git push heroko_live development:master
。您可以在本地存储库中添加钩子来阻止这种情况,但这些钩子是devs repo的本地存储库,可以被忽略或禁用或者不被开发人员设置。
答案 2 :(得分:0)
在两个遥控器中添加适当的git预接收hooks。 谷歌那个'过滤分支'肯定会找到一个例子。