如何配置git put只推送一些分支而忽略其他分支?

时间:2013-07-03 14:10:28

标签: git git-push

我想阻止某些git私有分支被推送到上游。

我怎样才能做到这一点?

任何以下类型的解决方案都是可以接受的:

  • 仅推送列表中的分支
  • 跳过列表中的分支

更新:目前我的推送配置正在使用mirror=true,这意味着将推送所有分支。

说明,我们在公司内部有一个内部集中式存储库,它被镜像到github。我们确实希望将所有分支机构都放到公司存储库中,这已经发生了,但我确实希望能够限制公开到github的内容,因此并非所有分支机构都会公开。

问题是现在一切都转到了github,可能是因为镜像选项。如果我删除它,它可能只会推送已存在于github上的分支。

尽管如此,即使这个选项也不是我想要的,因为我希望能够控制哪些选项被跳过或包含。

如果可以使用正则表达式模式完成,那就更好了。

2 个答案:

答案 0 :(得分:2)

将推送策略设置为上游:

git config --global push.default=upstream

(如果您只想将它​​用于单个回购而不是机器上的所有回购,请跳过--global部分)

然后,确保私有分支没有上游分支集(如果你没有手动设置它可能就是这种情况)

git branch -vv

如果有任何远程跟踪分支,请使用以下命令将其删除:

git branch -d -r origin/<remote branch name>

答案 1 :(得分:0)

您需要决定是否真的要镜像。如果您真的想要镜像,那么所有引用都将由未经修饰的git pushgit push <remote>推送。您仍然可以执行git push <remote> <localbranch>:<remotebranch>,但是如果您想推送一堆可能会变得乏味的分支,除非您编写脚本,即使这样,如果您要推送的分支集合经常更改,它仍然可以是疼痛

您可能更好的选择是关闭镜像,并在.git/config中明确设置您想要推送的分支,以及在没有git push时执行git的合适默认模式指定分支。 pgilmon的答案为该默认设置提供了一个可能的设置 - 阅读文档以确定这是否是最有用的默认模式(较新版本的{{1}}为该默认设置提供更多不同的模式,以及实现不同的默认默认模式“如果你没有指定一个。”