我想阻止某些git私有分支被推送到上游。
我怎样才能做到这一点?
任何以下类型的解决方案都是可以接受的:
更新:目前我的推送配置正在使用mirror=true
,这意味着将推送所有分支。
说明,我们在公司内部有一个内部集中式存储库,它被镜像到github。我们确实希望将所有分支机构都放到公司存储库中,这已经发生了,但我确实希望能够限制公开到github的内容,因此并非所有分支机构都会公开。
问题是现在一切都转到了github,可能是因为镜像选项。如果我删除它,它可能只会推送已存在于github上的分支。
尽管如此,即使这个选项也不是我想要的,因为我希望能够控制哪些选项被跳过或包含。
如果可以使用正则表达式模式完成,那就更好了。
答案 0 :(得分:2)
将推送策略设置为上游:
git config --global push.default=upstream
(如果您只想将它用于单个回购而不是机器上的所有回购,请跳过--global
部分)
然后,确保私有分支没有上游分支集(如果你没有手动设置它可能就是这种情况)
git branch -vv
如果有任何远程跟踪分支,请使用以下命令将其删除:
git branch -d -r origin/<remote branch name>
答案 1 :(得分:0)
您需要决定是否真的要镜像。如果您真的想要镜像,那么所有引用都将由未经修饰的git push
或git push <remote>
推送。您仍然可以执行git push <remote> <localbranch>:<remotebranch>
,但是如果您想推送一堆可能会变得乏味的分支,除非您编写脚本,即使这样,如果您要推送的分支集合经常更改,它仍然可以是疼痛
您可能更好的选择是关闭镜像,并在.git/config
中明确设置您想要推送的分支,以及在没有git push
时执行git
的合适默认模式指定分支。 pgilmon的答案为该默认设置提供了一个可能的设置 - 阅读文档以确定这是否是最有用的默认模式(较新版本的{{1}}为该默认设置提供更多不同的模式,以及实现不同的默认默认模式“如果你没有指定一个。”