2

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

我怎样才能做到这一点?

以下任何一种解决方案都是可以接受的:

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

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

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

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

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

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

4

2 回答 2

2

将推送策略设置为上游:

git config --global push.default=upstream

(如果您只希望它用于单个 repo 而不是机器上的所有 repo,请跳过该--global部分)

然后,确保私有分支没有设置上游分支(如果您没有手动设置,可能会出现这种情况)

git branch -vv

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

git branch -d -r origin/<remote branch name>
于 2013-07-03T14:30:38.820 回答
0

您需要决定是否真的要镜像。如果你真的想镜像,那么所有的 refs 都会被一个朴素的git pushor推送git push <remote>。你仍然可以这样做git push <remote> <localbranch>:<remotebranch>,但是如果你想要推送一堆可能会变得乏味的分支,除非你编写脚本,即使那样,如果你想要推送的分支集经常更改,它仍然会很痛苦。

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

于 2013-07-03T15:23:10.667 回答