首页 > 解决方案 > 如何告诉 git 对一个分支使用上游跟踪,而对其他所有分支使用“当前”行为?

问题描述

我的用户级别.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其他所有行为的行为。但是对于这个精确的用例,我想将偶尔的分支设置为推送到不同命名的分支。我可以这样做吗?

标签: gitpush

解决方案


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

当您在不同的存储库中使用多个主分支时,我认为不current适合。

Git docos

  • current- 推送当前分支以更新接收端的同名分支。适用于中央和非中央工作流程。

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

你也可以使用nothing

  • nothing- 除非明确给出 refspec,否则不要推送任何内容(错误输出)。这主要适用于希望通过始终明确来避免错误的人。

推荐阅读