gpt4 book ai didi

Git:跟踪分支而不检查?

转载 作者:太空狗 更新时间:2023-10-29 13:58:05 25 4
gpt4 key购买 nike

所以,我知道你可以通过以下方式 pull 出一个分支而不用检查它:

git fetch origin branchname:branchname

有没有办法在不 checkout 的情况下也跟踪该分支?(通常,这是通过:git checkout --track origin/branchnamegit branch -u origin branchname 完成的)答案可以是完全单独的命令,也可以是一部分上面提到的提取。

最佳答案

正如几位评论者指出的那样,答案已经嵌入到您的问题中:使用 git branch --set-upstream-to=origin/<em>branchname branchname</em> (或带有 -u 的较短版本)。不过,在这里添加一些注释可能很重要。

这不是 pull 分支(或者,好吧,也许是,因为该短语没有明确定义:-))。什么git fetch origin <em>branchname</em>:<em>branchname</em>做的是:

  • 从源获取任何需要的提交,然后
  • 创建或更新名为的本地分支branchname 基于提取在 origin 中看到的内容的分支 branchname

如果更改为 branchname,则更新(如果是更新)失败 不是快进操作。在这种情况下要强制它成功,请添加一个强制标志:--force或前导加号 + .

git fetch如果 branchname,基于更新也会失败 是当前 checkout 的分支,即如果 HEAD是对该分支的符号引用。也就是说,你只能git fetch origin <em>branchname</em>:<em>branchname</em>如果该分支名称现在未实际 checkout 。

与此同时,git branch --set-upstream-to设置(或覆盖)(本地)分支的 upstream 设置。每个本地分支可以有一个上游设置(或没有上游设置)。拥有上游可以生成其他 Git 命令——git fetch 除外那就是——更容易使用。或者至少,这是它的目的;您个人是否认为结果“更容易”是个人偏好的问题。 (不过,我从未遇到过任何人认为它更难。)

如果本地分支已经存在并且已经有上游设置,您可能不想覆盖当前的上游设置。您可以使用 git rev-parse 查看: <em>branchname</em>@{upstream}命名 的当前上游设置 branchname ,如果没有则失败,所以:

if ! git rev-parse $branchname@{upstream} >/dev/null 2>&1; then
git branch --set-upstream-to=origin/$branchname $branchname
fi

如果未设置,将设置上游,但如果已设置,则不执行任何操作。

关于Git:跟踪分支而不检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51157736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com