git创建分支并继承当前的上游

时间:2015-03-13 10:49:39

标签: git

我使用以下内容创建一个新的本地分支foo

git checkout --track -b foo

但是在创建时,.git/config条目看起来像这样

[branch "foo"]
    remote = .
    merge = refs/heads/master

只有一半是正确的,因为remote尚未设置为跟踪原始分支的远程(在我的情况下称为upstream。我使用remote.pushdefault以便我从upstream拉出并推送到origin)。

我也尝试过直接使用git branch(创建后),例如与

git branch -u upstream/master foo

这似乎有效,但这意味着我需要每次手动输入upstream/master部分(这实际上是动态的......这是一个小问题)。

是否有命令有效地说“将上游设置为当前上游”?

我尝试更新它,例如与

git branch -u `git rev-parse --abbrev-ref --symbolic-full-name @{u}` foo

结果为fatal: branch 'foo' does not exist

更新这个黑客似乎有效,但它很难看,所以我还是喜欢更清洁的东西

[alias]
        cut = "!f() { UPSTREAM=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`; git checkout -b $1 $UPSTREAM; git config branch.$1.pushremote origin; }; f"

(magit需要第二部分)

1 个答案:

答案 0 :(得分:0)

好吧,好像我已经编造了一个别名来做这个

[alias]
    cut = "!f() { UPSTREAM=`git rev-parse --abbrev-ref --symbolic-full-name @{u}`; git checkout -b $1 $UPSTREAM; git config branch.$1.pushremote origin; }; f"

第二部分是针对magit的,所以如果你不使用它,你可以放弃git config branch.$1.pushremote origin;