Git: 不签出跟踪分支?
Git: Track branch without checking out?
所以,我知道你可以通过以下方式拉出一个分支而不用检查它:
git fetch origin branchname:branchname
有没有办法在不签出的情况下也跟踪该分支?
(通常,这是通过:git checkout --track origin/branchname
或 git branch -u origin branchname
完成的)答案可以完全是一个单独的命令,也可以是上述提取的一部分。
答案已经包含在您的问题中,正如一些评论者指出的那样:使用 git branch --set-upstream-to=origin/<em>branchname branchname</em>
(或带有 -u
的较短版本)。不过,在这里添加一些注释可能很重要。
那不是 拉分支 (或者,好吧,也许是,因为该短语没有明确定义:-))。 git fetch origin <em>branchname</em>:<em>branchname</em>
的作用是:
- 从源获取任何需要的提交,然后
- 根据 fetch 在
origin
的分支 [=12 中看到的内容,创建或更新名为 branchname
的本地分支=].
如果对branchname
的更改不是快进操作,则更新(如果是更新)将失败。要在这种情况下强制它成功,请添加强制标志:--force
或前导加号 +
.
如果 branchname
是当前签出的分支,即如果 HEAD
是对该分支的符号引用。也就是说,你只能 git fetch origin <em>branchname</em>:<em>branchname</em>
if that branch name现在实际上还没有签出。
同时,git branch --set-upstream-to
设置(或覆盖)(本地)分支的 upstream 设置。每个本地分支可以有一个 upstream 设置(或没有上游设置)。拥有上游使得 other Git 命令——而不是 git fetch
——更易于使用。或者至少,这就是它的 目的; 您个人是否认为结果“更容易”是个人喜好的问题。 (不过,我从来没有遇到过 更难 的人。)
如果本地分支已经存在并且已经有上游设置,您可能不想覆盖当前的上游设置。您可以使用 git rev-parse
检查: <em>branchname</em>@{upstream}
names 当前上游设置 branchname
,如果没有则失败,所以:
if ! git rev-parse $branchname@{upstream} >/dev/null 2>&1; then
git branch --set-upstream-to=origin/$branchname $branchname
fi
如果未设置,将设置上游,但如果已设置,则不执行任何操作。
所以,我知道你可以通过以下方式拉出一个分支而不用检查它:
git fetch origin branchname:branchname
有没有办法在不签出的情况下也跟踪该分支?
(通常,这是通过:git checkout --track origin/branchname
或 git branch -u origin branchname
完成的)答案可以完全是一个单独的命令,也可以是上述提取的一部分。
答案已经包含在您的问题中,正如一些评论者指出的那样:使用 git branch --set-upstream-to=origin/<em>branchname branchname</em>
(或带有 -u
的较短版本)。不过,在这里添加一些注释可能很重要。
那不是 拉分支 (或者,好吧,也许是,因为该短语没有明确定义:-))。 git fetch origin <em>branchname</em>:<em>branchname</em>
的作用是:
- 从源获取任何需要的提交,然后
- 根据 fetch 在
origin
的分支 [=12 中看到的内容,创建或更新名为branchname
的本地分支=].
如果对branchname
的更改不是快进操作,则更新(如果是更新)将失败。要在这种情况下强制它成功,请添加强制标志:--force
或前导加号 +
.
如果 branchname
是当前签出的分支,即如果 HEAD
是对该分支的符号引用。也就是说,你只能 git fetch origin <em>branchname</em>:<em>branchname</em>
if that branch name现在实际上还没有签出。
同时,git branch --set-upstream-to
设置(或覆盖)(本地)分支的 upstream 设置。每个本地分支可以有一个 upstream 设置(或没有上游设置)。拥有上游使得 other Git 命令——而不是 git fetch
——更易于使用。或者至少,这就是它的 目的; 您个人是否认为结果“更容易”是个人喜好的问题。 (不过,我从来没有遇到过 更难 的人。)
如果本地分支已经存在并且已经有上游设置,您可能不想覆盖当前的上游设置。您可以使用 git rev-parse
检查: <em>branchname</em>@{upstream}
names 当前上游设置 branchname
,如果没有则失败,所以:
if ! git rev-parse $branchname@{upstream} >/dev/null 2>&1; then
git branch --set-upstream-to=origin/$branchname $branchname
fi
如果未设置,将设置上游,但如果已设置,则不执行任何操作。