克隆一个镜像的本地 Git 存储库

如何解决克隆一个镜像的本地 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?