我有一个本地的Git仓库,是从一个SVN仓库创建的:
$ git svn clone -s svn:...
然后我创建了一个备份远程,并将所有东西推送到它上面:
$ git remote add backup git@myhost:mybackup.git
$ git push --mirror backup
现在,当我尝试从备份进行克隆时,它缺少所有svn标签和分支。现在,当我尝试从备份进行克隆时,它缺少所有svn标签和分支。
$ git clone git@myhost:mybackup.git
$ cd mybackup
$ git branch -a
* master
origin
remotes/origin/HEAD -> origin/master
remotes/origin/master
如何克隆包含所有标签和分支的代码库?
我发现唯一的方法是镜像这个代码库:
$ git clone --mirror git@myhost:mybackup.git
这将创建一个本地的mybackup.git
目录,其中包含所有标签/分支的信息(我可以使用制表符自动补全获取整个列表),但它不是一个有效的可用于操作的仓库:
$ git checkout mytag
fatal: This operation must be run in a work tree
必须有命令行选项才能真正克隆具有所有分支/标记的存储库吗?
我在这里找到了几个相关的问题,但是没有一个答案适用于这种情况。我认为区别在于我的克隆是使用--mirror
创建的?
refs/heads
目录中,而我找不到的分支位于refs/remotes
中(奇怪的是,backup
也在refs/remotes
中 - 这是--mirror
的副作用)。 - Shadow Man