因此,我知道您可以不通过以下方式将分支签出:
git fetch origin branchname:branchname
是否可以在不签出的情况下跟踪该分支?
(通常,这是通过git checkout --track origin/branchname
或git branch -u origin branchname
完成的)答案可以是完全独立的命令,也可以是上述提取的一部分。
答案 0 :(得分:3)
正如一些评论者所指出的那样,答案已经嵌入到您的问题中:使用git branch --set-upstream-to=origin/branchname branchname
(或使用-u
的较短版本)。不过,在此处添加一些注释可能很重要。
那不是拉一个分支(或者,也许是这样,因为该短语的定义不正确:-))。那是什么:
branchname
的分支 origin
中看到的内容,创建或更新名为 branchname
的本地分支。 如果更新是更新,则如果对 branchname
的更改不是快进操作,则更新将失败。要在这种情况下强制其成功,请添加一个强制标志:--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
如果未设置上游将设置上游,但如果已经设置则不执行任何操作。