如何解决克隆一个镜像的本地 Git 存储库
我已经镜像 (clone --mirror
) 一个没有远程引用的本地存储库,仅用于备份目的。我注意到备份的 repo 有一个“packed-refs”文件,里面有 local refs。
当我尝试克隆它时,我得到了相同的“packed-refs”文件,其中包含远程引用,例如 remotes/origin/heads/... 而不是本地引用。然后,我必须检查每个 refs 以获取本地 refs。
有没有办法,也许是一些 clone
选项,能够直接恢复本地引用?
解决方法
如果您从某个现有克隆制作了一个裸克隆,并且现有克隆已被破坏(或者您可能正在新的服务器设置上重新创建它),您有两个选择:
- 创建新的裸克隆作为空克隆,然后使用
git push --mirror
from备份/镜像克隆到新克隆,或 - 使用现有裸克隆中的
git clone --mirror
来创建新的裸克隆,然后可以选择删除在新裸克隆中创建的遥控器。
例如,假设这里的提示 ec$
在 ec.example.com
上的现有镜像克隆上,而 ns$
是新服务器 ns.example.com
上的提示:
ns$ cd /git && mkdir restored && cd restored && git init --bare
[git messages happen here]
ec$ git push --mirror ssh://ns.example.com/git/restored
git push --mirror
在 /git/restored
中设置新服务器的克隆。
或者:
ns$ cd /git
ns$ git clone --mirror ssh://ec.example.com/~user/backup/the-mirror restored
[git messages happen here]
ns$ cd restored
ns$ git remote remove origin
git remote remove
步骤是可选的;它清除了表明恢复的裸镜像克隆来自 ec.example.com/~user/backup/the-mirror
的痕迹。由于只有真正登录到服务器的任何人才能看到这些痕迹,因此这不是真正必需,但您可能会出于任何原因喜欢它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。