所以,我知道你可以不检查就拔掉一根树枝:
git fetch origin branchname:branchname
有没有办法在不检查的情况下跟踪那家分行?
(通常,这是通过:
git checkout --track origin/branchname
或git branch -u origin branchname
完成的)答案可以是完全独立的命令,也可以是上面提到的获取的一部分。 最佳答案
正如一些评论者指出的那样,答案已经嵌入到你的问题中:使用git branch --set-upstream-to=origin/branchname branchname
(或使用-u
的较短版本)。不过,在这里添加一些注释可能很重要。
这不是在拉树枝(或者,嗯,也许是,因为这个短语没有很好的定义:-)。它的作用是:
从源获取任何必需的提交,然后
根据fetch在branchname
的branchorigin
中看到的内容创建或更新名为branchname
的本地分支。
如果是更新,则如果对branchname
的更改不是快进操作,则更新将失败。在这种情况下,要强制它成功,请添加一个force标志:--force
或前导加号+
。
如果branchname
是当前签出的分支,即如果HEAD
是对该分支的符号引用,则更新也将失败。
如果本地分支已经存在并且已经具有上游集合,则可能不希望覆盖当前的上游设置。您可以使用git rev-parse
:branchname@{upstream}
将当前上游设置命名为branchname
,否则将失败,因此:
if ! git rev-parse $branchname@{upstream} >/dev/null 2>&1; then
git branch --set-upstream-to=origin/$branchname $branchname
fi
将设置上游(如果未设置),但如果已设置,则不执行任何操作。