代码之家  ›  专栏  ›  技术社区  ›  detly

如何告诉git对一个分支使用上游跟踪,而对其他分支使用“当前”行为?

  •  0
  • detly  · 技术社区  · 6 年前

    我的用户级别 .gitconfig 包含:

    [push]
    default = current
    

    这是我99%想要的行为。

    我有一个带两个遥控器的Git结账台, origin bitbucket . 当地人 master 支线 origin/master . 我也想要一根树枝,比如说 bbmaster 追踪 bitbucket/master . 所以我加入了 .git/config :

    [branch "master"]
        remote = origin
        merge = refs/heads/master
    
    [branch "bbmaster"]
        remote = bitbucket
        merge = refs/heads/master
    

    尽管如此,如果我 bbmaster公司 不指定远程目标分支:

    $ git push
    Total 0 (delta 0), reused 0 (delta 0)
    To bitbucket.org:(remote path)
     * [new branch]      bbmaster -> bbmaster
    

    …它创建了一个新的远程分支 bbmaster公司 . 我希望它表现得像我打字一样 git push -u bitbucket bbmaster:master ,但记住每次都要输入很难而且容易出错。

    我想保留 push.default = current 其他一切的行为。但是,我想设置偶发分支,以将其推送到一个不同名称的分支,以获得这个精确的用例。我能做到吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   tmaj    6 年前

    我相信你的工作流程 push.default 有价值的 upstream 会更好。

    我不认为 current 适合与多个 主人 不同回购协议中的分支机构。

    Git docos :

    • 现在的 -推送当前分支以更新接收端具有相同名称的分支。可在中央和非中央工作流中工作。

    • 上游 -将当前分支推回到其更改通常集成到当前分支(称为@{upstream})中的分支。只有当您推送到通常从中提取的同一存储库(即中心工作流)时,此模式才有意义。

    你也可以用 nothing

    • 没有什么 -除非明确给出refspec,否则不要推送任何内容(错误)。这主要是为了那些希望通过总是直截了当来避免错误的人。