Pen*_*rah 6 git git-pull git-fetch
所以,我知道你可以通过以下方式拉出一个分支而不检查它:
git fetch origin branchname:branchname
Run Code Online (Sandbox Code Playgroud)
有没有办法在不检查的情况下也跟踪该分支?
(通常,这是通过:git checkout --track origin/branchname或来完成的git branch -u origin branchname)答案可以是完全独立的命令,也可以是上述获取的一部分。
答案已经嵌入您的问题中,正如一些评论者指出的那样:使用(或带有 的较短版本)。不过,在这里添加一些注释可能很重要。git branch --set-upstream-to=origin/branchname branchname-u
这不是拉分支(或者,好吧,也许是,因为该短语没有明确定义:-))。所做的是:git fetch origin branchname:branchname
branchname该分支根据 fetch 在origin的分支中看到的内容命名branchname。如果是更新,则如果更改branchname不是快进操作,则更新会失败。要在这种情况下强制它成功,请添加一个强制标志: 或--force一个前导加号+。
git fetch如果branchname是当前签出的分支,即 ifHEAD是对该分支的符号引用,则基于的更新也会失败。也就是说,仅当该分支名称当前尚未实际签出时才可以。git fetch origin branchname:branchname
同时,git branch --set-upstream-to设置(或覆盖)(本地)分支的上游设置。每个本地分支可以有一个上游设置(或没有上游设置)。拥有上游使得除\xe2\x80\x94之外的其他git fetchGit命令\xe2\x80\x94更易于使用。或者至少,这就是它的目的;您个人是否认为结果“更容易”取决于个人喜好。(不过,我从未遇到过比这更难的人。)
如果本地分支已经存在并且已经有上游设置,您可能不想覆盖当前的上游设置。您可以使用 : 来检查git rev-parse:branchname@{upstream}命名 的当前上游设置branchname,如果没有,则失败,因此:
if ! git rev-parse $branchname@{upstream} >/dev/null 2>&1; then\n git branch --set-upstream-to=origin/$branchname $branchname\nfi\nRun Code Online (Sandbox Code Playgroud)\n如果未设置则设置上游,但如果已经设置则不执行任何操作。
\n