gpt4 book ai didi

git - 如何从 refs/remotes 克隆一个包含所有分支和标签的 git repo?

转载 作者:太空狗 更新时间:2023-10-29 12:51:22 26 4
gpt4 key购买 nike

我有一个从 svn 存储库创建的本地 git 存储库:

$ git svn clone -s svn:...

然后我创建了一个备份 Remote 并将所有内容推送给它:

$ git remote add backup git@myhost:mybackup.git
$ git push --mirror backup

现在,当我尝试从我的备份中克隆时,它丢失了所有 svn 标签和分支。

$ git clone git@myhost:mybackup.git
$ cd mybackup
$ git branch -a
* master
origin
remotes/origin/HEAD -> origin/master
remotes/origin/master

如何克隆包含所有标签和分支的存储库?

我找到的唯一方法是镜像 repo:

$ git clone --mirror git@myhost:mybackup.git

这会创建一个本地 mybackup.git 目录,它知道所有标签/分支(我可以使用制表符完成来获取整个列表)但它不是一个有效的可用 repo:

$ git checkout mytag
fatal: This operation must be run in a work tree

必须有命令行选项才能真正克隆带有所有分支/标签的 repo???

我在这里发现了几个相关的问题,但没有一个答案适用于这种情况。我认为不同之处在于我的克隆是使用 --mirror?

创建的

最佳答案

有两种方法可以改进你的命令 git clone --mirror git@myhost:mybackup.git我找到的是这个,知道你的命令创建了一个 mybackup.git 目录:

mkdir mybackup
mv mybackup.git mybackup/.git
cd mybackup
git init

在那里,你有一个完整的工作目录。

或者您可以在此页面上阅读:https://git.wiki.kernel.org/index.php/Git_FAQ#How_do_I_clone_a_repository_with_all_remotely_tracked_branches.3F

git clone --mirror git@myhost:mybackup.git mybackup/.git
cd mybackup
git config --bool core.bare false

我认为直到最后一行,两者都是等价的,并且命令 git config --bool core.bare false 可能比执行 git init 更干净。

总而言之,--mirror 创建的是裸仓库而不是工作仓库,因此您需要将其转换为工作仓库。

关于git - 如何从 refs/remotes 克隆一个包含所有分支和标签的 git repo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com