【问题标题】:How to configure git put push only some branches and ignore others?如何配置 git put 只推送一些分支而忽略其他分支?
【发布时间】:2013-07-01 06:42:54
【问题描述】:

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

我怎样才能做到这一点?

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

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

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

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

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

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

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

【问题讨论】:

标签: git git-push


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    将推送策略设置为上游:

    git config --global push.default=upstream
    

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

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

    git branch -vv
    

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

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

    【讨论】:

    • 我忘了说我当前的配置是使用 mirror=true 选项。
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2019-07-29
    • 2016-12-24
    • 1970-01-01
    • 2020-10-08
    • 2018-12-22
    • 1970-01-01
    • 2015-10-31
    相关资源
    最近更新 更多