为什么不能 Git 设置这个分支的上游?
why can't Git set the upstream for this branch?
情况如下:
$ git branch --all -vv
* feature/crvc11-93-add-pec 93fe8bc ...
release/19.3.0-cv011 4012d42 [origin/release/19.3.0-cv011] ...
remotes/origin/feature/crvc11-93-add-pec 93fe8bc ...
remotes/origin/release/19.3.0-cv011 4012d42 ...
我不知道为什么feature/crvc11-93-add-pec
我检查的时候没有跟踪remote-tracking分支origin/feature/crvc11-93-add-pec
,现在我想手动添加它作为上游:
$ git branch --set-upstream-to origin/feature/crvc11-93-add-pec
fatal: Cannot setup tracking information; starting point 'origin/feature/crvc11-93-add-pec' is not a branch.
这里的Git是什么意思?是的,它是一个分支,它是远程跟踪分支。如果我删除 origin
前缀,那么我们会得到
$ git branch --set-upstream-to feature/crvc11-93-add-pec
warning: Not setting branch feature/crvc11-93-add-pec as its own upstream.
如何制作 feature/crvc11-93-add-pec
曲目 origin/feature/crvc11-93-add-pec
?它们是相同的提交,这应该可以正常工作。我没有正确“拼写”分支名称吗?插入 =
似乎没有任何区别。
更多信息 我怀疑这个问题与浅深度 1 单分支克隆 (release/19.3.0-cv011
) 有关。我认为当你这样做时,有关于获取和远程跟踪分支的特殊规则。 .git/config 包含此行:
fetch = +refs/heads/release/19.3.0-cv011:refs/remotes/origin/release/19.3.0-cv011
...我觉得这在某种程度上改变了整个游戏。如果是这样,那就太不幸了,因为我真的不希望整个历史记录在我的计算机上占据 space。
您需要将浅单分支克隆变成浅双分支克隆。 :-)
更准确地说,使用 git remote set-branches --add
添加另一个 跟踪名称 。这不会影响任何深度设置(必须在以后的 git fetch
操作中重复,因为它们没有存储在任何地方)但是 确实 改变了 fetch
设置你在您的 更多信息 部分引用。您添加的每个分支都会再添加一个 fetch = +refs/heads/<em>name</em>:refs/remotes/<em>remote</em>/<em>名称</em>
行。这些行指示您的 Git 创建或更新相应的远程跟踪名称,以便您现在可以将该名称传递给 git branch --set-upstream-to
。
添加要跟踪的其他分支后,您需要 运行 git fetch
,并且您可能希望使用较小的 --depth
值来执行此操作(也许又是 1 个)。你可能会得到更好的整体结果(更好的 git fetch
压缩和打包文件等) 在未来 如果你的深度足以让所有提交子图片段加入向上。这也将为您提供足够的信息,以便在图表的该区域进行正常的 Git 操作。到底要走多深(git fetch
的 --deepen
或 --depth
)是不可能从“你这边”计算的,直到你足够深,所以一个常见的技术1 是一次添加 50 或 100 个提交,直到你“足够深”。
1理想情况下我们会让对方为我们计算这个,但它不会。
如果获取是免费的,一次将每个子图加深一个提交级别可能是可行的方法,但获取不是免费的,因此我们需要分摊获取成本与超额数据的携带成本——a非常标准的图优化问题!
情况如下:
$ git branch --all -vv
* feature/crvc11-93-add-pec 93fe8bc ...
release/19.3.0-cv011 4012d42 [origin/release/19.3.0-cv011] ...
remotes/origin/feature/crvc11-93-add-pec 93fe8bc ...
remotes/origin/release/19.3.0-cv011 4012d42 ...
我不知道为什么feature/crvc11-93-add-pec
我检查的时候没有跟踪remote-tracking分支origin/feature/crvc11-93-add-pec
,现在我想手动添加它作为上游:
$ git branch --set-upstream-to origin/feature/crvc11-93-add-pec
fatal: Cannot setup tracking information; starting point 'origin/feature/crvc11-93-add-pec' is not a branch.
这里的Git是什么意思?是的,它是一个分支,它是远程跟踪分支。如果我删除 origin
前缀,那么我们会得到
$ git branch --set-upstream-to feature/crvc11-93-add-pec
warning: Not setting branch feature/crvc11-93-add-pec as its own upstream.
如何制作 feature/crvc11-93-add-pec
曲目 origin/feature/crvc11-93-add-pec
?它们是相同的提交,这应该可以正常工作。我没有正确“拼写”分支名称吗?插入 =
似乎没有任何区别。
更多信息 我怀疑这个问题与浅深度 1 单分支克隆 (release/19.3.0-cv011
) 有关。我认为当你这样做时,有关于获取和远程跟踪分支的特殊规则。 .git/config 包含此行:
fetch = +refs/heads/release/19.3.0-cv011:refs/remotes/origin/release/19.3.0-cv011
...我觉得这在某种程度上改变了整个游戏。如果是这样,那就太不幸了,因为我真的不希望整个历史记录在我的计算机上占据 space。
您需要将浅单分支克隆变成浅双分支克隆。 :-)
更准确地说,使用 git remote set-branches --add
添加另一个 跟踪名称 。这不会影响任何深度设置(必须在以后的 git fetch
操作中重复,因为它们没有存储在任何地方)但是 确实 改变了 fetch
设置你在您的 更多信息 部分引用。您添加的每个分支都会再添加一个 fetch = +refs/heads/<em>name</em>:refs/remotes/<em>remote</em>/<em>名称</em>
行。这些行指示您的 Git 创建或更新相应的远程跟踪名称,以便您现在可以将该名称传递给 git branch --set-upstream-to
。
添加要跟踪的其他分支后,您需要 运行 git fetch
,并且您可能希望使用较小的 --depth
值来执行此操作(也许又是 1 个)。你可能会得到更好的整体结果(更好的 git fetch
压缩和打包文件等) 在未来 如果你的深度足以让所有提交子图片段加入向上。这也将为您提供足够的信息,以便在图表的该区域进行正常的 Git 操作。到底要走多深(git fetch
的 --deepen
或 --depth
)是不可能从“你这边”计算的,直到你足够深,所以一个常见的技术1 是一次添加 50 或 100 个提交,直到你“足够深”。
1理想情况下我们会让对方为我们计算这个,但它不会。
如果获取是免费的,一次将每个子图加深一个提交级别可能是可行的方法,但获取不是免费的,因此我们需要分摊获取成本与超额数据的携带成本——a非常标准的图优化问题!