【发布时间】:2011-07-30 14:51:28
【问题描述】:
我在使用克隆存储库和分支的 Git 方面遇到了一些问题,我无法找到答案。让我描述一下:我们在这里有一个裸露的主 Git 存储库,我们都从中提取和推送到,位于本地 linux 机器上,并且可以通过 ssh 访问。我将这个克隆到我的 USB 拇指驱动器,如下所示:
git clone ssh://adahl@gollum//net/repos/netcube/patches.git
这当然给了我一个本地克隆,我的拇指驱动器上有一个工作副本。我 cd 到这个,然后在这个克隆中看到一些分支:
cd patches
git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/stable
到目前为止一切顺利,但是如果我再次将拇指驱动器上的存储库克隆到我的笔记本上,那么稳定的分支就会丢失。见:
cd ..
git clone patches patches2
cd patches2
git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
我在克隆时尝试了几个选项,或者在克隆后尝试了git fetch,但没有任何东西可以将稳定分支带到 patches2 存储库。我假设我在这里缺乏对 git 的理解,只是以错误的方式使用它。有人可以指出我在使用和/或理解方面的错误吗?
【问题讨论】:
-
感谢 cmets,我知道我的误解是什么。我想要的是用 all 来自主存储库的内容“传输存储库”,但 Git 会根据您的跟踪分支进行某种选择性克隆。使用
git clone --mirror,我得到了一个中间存储库,我可以按照我的预期使用。 -
更简单地说,
git clone(没有特殊选项)不会从源仓库复制远程跟踪分支,只会复制源上的本地分支(.git/refs/heads/下的分支)来源,而不是.git/refs/remotes/<remote>/下的来源。