我使用以下内容创建一个新的本地分支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需要第二部分)
答案 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;
。