使用git clone --mirror和git push --mirror移动git仓库

9
我需要将几个Gitlab仓库迁移到Bitbucket,发现最简单的方法似乎是:
1.在Bitbucket中创建新的空仓库
2.使用命令git clone --mirror git@gitlab.com:path/to/repo.git 3.切换到repo.git目录下cd repo.git 4.更改远程仓库地址为Bitbucket上的地址git remote set-url origin git@bitbucket.org:path/to/repo.git 5.使用命令git push --mirror 这种方式可以复制整个仓库,包括标签和所有分支等。我还没有发现这种方法的任何缺点。然而,由于我在互联网上没有看到过这种方法,我担心我可能遗漏了一些东西。
我可以安全地使用这种方法并删除旧的仓库吗?

我将把这个认定为可能是一个重复的问题,具体原因请参考git clone --mirror和git clone --bare有什么区别的已接受答案,因为它详细解释了--mirror的工作原理。总之,如果使用情况适合,我不认为有任何缺点。 - msanford
2
我看过那个帖子,但它并没有完全回答我的问题。那个帖子回答了--mirror的作用是什么,但没有回答使用它来移动存储库是否有任何不利之处。(编辑)啊,你的编辑补充了缺失的信息。谢谢! - Rutger Bresjer
1
请注意,--mirror 克隆和推送将复制通过 Git 接口可以复制的所有内容。有一些东西是无法复制的:钩子(您必须通过 Bitbucket 的 Web 界面设置),reflogs(可能两边都没有,因为裸仓库默认不具备它们),以及其他一些通常无法通过 Web 界面触及的东西,例如在某个托管服务器上分叉了您的存储库的人(如果有的话)。 - torek
你为什么不使用https://bitbucket.org/repo/import? - Jim Redmond
我无法使用Bitbucket导入,因为Gitlab仓库是私有的,而Bitbucket不支持Gitlab使用的身份验证方法。 - Rutger Bresjer
我也尝试复制repo。你的方法导致配置中出现了fetch = +refs/*:refs/*, mirror = true(据我所知,这样的repo不会按预期工作)。我猜你省略了某些步骤。或者可能没有,而是做错了一些事情。我甚至尝试了两种方式:path/to/repo.git是新的空文件夹,它与你的步骤(1)中的文件夹相同。或者它只适用于Bitbucket。谢谢。 - Martian2020
1个回答

0

从仅存储库的角度来看,它应该是安全的。所有引用(分支、标签)都按原样复制。

正如torek评论中提到的,其他东西可能会被省略:配置、特定于主机的设置、钩子。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接