为什么可以';t Git是否设置此分支的上游?

为什么可以';t Git是否设置此分支的上游?,git,git-remote,Git,Git Remote,情况如下: $ 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/1

情况如下:

$ 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
签出时没有跟踪远程跟踪分支
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在这里是什么意思?是的,它是一个分支,它是远程跟踪分支。如果我删除
原点
前缀,则得到

$ 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
track
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

…我觉得这在某种程度上改变了整个游戏。如果是这样,那就很不幸了,因为我真的不想让整个历史在我的计算机上占据空间。

您需要将浅层单分支克隆变成浅层双分支克隆。:-)

更准确地说,使用git remote set branchs添加另一个跟踪名称--add。这不会影响任何深度设置(必须在以后的
git fetch
操作中重复,因为它们不会存储在任何位置),但会改变您在更多信息部分引用的
fetch
设置。您添加的每个分支都会再添加一行
fetch=+refs/heads/name:refs/remotes/remote/name
。这些行指示您的Git创建或更新相应的远程跟踪名称,以便您现在可以将该名称传递给
Git branch——将上游设置为

在添加要跟踪的其他分支之后,您需要运行
git fetch
,并且您可能希望使用一个小的
--depth
值(可能只需要1)。如果您的深度足以让所有提交子图片段连接起来,那么将来可能会获得更好的总体结果(更好的
git fetch
压缩和打包文件等等)。这还将为您提供足够的信息,以便在图形的该区域执行正常的Git操作。确切的深度(使用git fetch的
--deeph
--deeph
)是不可能从“您这边”计算的,直到您达到足够的深度,所以一种常见的技术1是一次添加50或100次提交,直到您达到“足够的深度”


1实际上我们会让另一方为我们计算,但它不会


如果回迁是免费的,那么一次将每个子图深化一个提交级别可能是一种方法,但是回迁不是免费的,因此我们需要将回迁成本与多余数据的携带成本进行分摊——这是一个相当标准的图优化问题

git branch--set upstream to origin功能/crvc11-93-add-pec
?set upstream
的签名是
--set upstream
,所以您可能只需要空间。.是的,这听起来正是我想要的技术!这是一次大规模的回购交易,数十家独立公司在各自的分支机构上工作,其中有数百家,对我来说,拥有任何不必要的远程跟踪分支机构或跟随母公司太远都是浪费和混乱的。我们仅通过拉请求为一个分支提供服务。基本上,我希望能够尝试一个pull请求分支,然后稍后将其删除。所以这应该给我一个这样做的策略。