我使用 --single-branch 选项克隆了我的 repo:

git clone -b FIRST git@<host>:repos/repo.git --single-branch

现在,正如预期的那样,我只配置了这个单一的上游。因此,以下命令将不起作用:
git branch --track SECOND origin/SECOND

如何添加、获取和 checkout 另一个现有的远程存储库?

最佳答案

由于您使用 --single-branch 选项克隆了存储库,因此它设置为仅跟踪远程上的此分支。

TL;DR :要完全撤消 --single-branch,撤消其配置设置并重新获取

git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch

在使用 --single-branch 设置的 repo 中,要从远程 fetch 另一个分支,您必须明确获取它。
git fetch origin +refs/heads/<branch-name>:refs/remotes/origin/<branch-name>

或者,您可以通过将 <branch-name> 替换为 * 来获取所有远程分支。

现在您应该能够查看新获取的分支。
git checkout <branch-name>

解释

我使用的 fetch 语法可以粗略地描述为 source:target
使用它时,您是在用第一个路径描述提取的 source,而用第二个路径确定 target

这意味着您正在从 refs/heads/<branch> 获取远程分支并将结果写入 refs/remotes/origin/<branch> 。当然,可以将它写在不同的地方,例如通过使用 <branch> 只是一个本地分支(也可以根据需要选择名称)。

此外,这解释了为什么 git push origin :<branch> 删除远程上的 <branch> ,因为您没有将任何内容推送到远程分支,从而有效地删除了它。

注意 在编写 refs/heads/<branch>refs/heads/ 是完全可选的,如果你只是声明 <branch> git 将查看 refs/heads/ 。这不仅对获取有效,而且对所有分支引用有效。

关于git - 如何添加、获取和 checkout 缺少的远程分支?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23779358/

10-13 08:39