防止一个分支推送到特定的远程仓库。

3

接下来的内容是这样的。我们的项目有两个分支:

> git branch
> * master
>   development

我们还有两个遥控器:

> git remote
> heroku_live
> heroku_dev

因此,实际上每个分支都有自己指定的远程分支。 master 分支推送到 heroku_livedevelopment 分支推送到 heroku_dev,这使我们可以拥有开发的沙盒环境。我们知道我们可以在本地服务器上运行开发分支,但是有时我们想向客户演示功能,因此我们有一个 heroku_dev
现在这里的问题(或潜在问题)是可能会有人不小心将开发分支推送到线上服务器,反之亦然。我们如何防止这种情况发生?是否有一种方法可以限制分支可以推送到哪些远程分支?
3个回答

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
我不了解Heroku,但我猜你配置了heroku_live以部署master分支,而heroku_dev则部署development分支,对吗?那么如果有人将开发分支推送到heroku_livedevelopment分支,这有什么大问题呢?
如果这是一个问题,你可以简单地向两个Heroku远程添加pre-receive钩子,禁止将代码推送到另一个分支。但是你无法通过服务器端的钩子来阻止某人执行git push heroko_live development:master。你可以在本地存储库中添加钩子以防止这种情况发生,但这些钩子只在开发者的本地存储库中起作用,可能会被忽略、禁用或未设置。

0

在两个远程仓库中添加适当的git pre-receive hooks。使用“filter on branch”在Google上搜索,肯定会找到一个例子。


那不会有什么帮助,对吧?如果你像这样推送 git push heroko_live development:master 你仍然可以这样做,因为 pre-receive 钩子不知道你正在推送的本地分支。 - Vampire
当然可以。但我不明白那会成为一个问题。 - renefritze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接