我用--single-branch
选项克隆了我的仓库:
git clone -b FIRST git@<host>:repos/repo.git --single-branch
现在,正如预期的那样,我只配置了这个单一上游。因此,以下命令将不起作用:
git branch --track SECOND origin/SECOND
如何添加,获取和签出另一个现有的远程存储库?
答案 0 :(得分:3)
由于您使用--single-branch
选项克隆了存储库,因此将其设置为仅跟踪遥控器上的此分支。
TL; DR :完全撤消--single-branch
,撤消其配置设置并重新提取
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch
在使用--single-branch
设置的仓库中,从远程设置到fetch
另一个分支,您必须明确地获取它。
git fetch origin +refs/heads/<branch-name>:refs/remotes/origin/<branch-name>
或者,您可以将<branch-name>
替换为*
来获取所有远程分支。
现在你应该能够检查新获取的分支。
git checkout <branch-name>
我使用的提取语法大致可以描述为source:target
使用它时,您将使用第一条路径描述获取的source
,同时确定具有第二条路径的target
。
这意味着您从refs/heads/<branch>
获取遥控器上的分支,并将结果写入refs/remotes/origin/<branch>
。当然可以将它写在不同的地方,例如使用<branch>
只是一个本地分支(也可以选择喜欢的名称)。
此外,这解释了为什么git push origin :<branch>
删除了遥控器上的<branch>
,因为您正在将 no 推送到远程分支,从而有效删除它。
注意撰写refs/heads/<branch>
refs/heads/
时完全是可选的,如果你只是说明<branch>
,git会查看refs/heads/
。这不仅对获取有效,而且对所有分支引用都有效。