117

如何为外部 git 存储库创建 github 镜像,使其显示为“真实镜像”,例如https://github.com/mirrors

到目前为止,我使用以下方法设置了一个镜像:

cd /path/to/bare/repository
git remote add --mirror github git@github.com:user/repo.git

并配置 post receive 钩子来做一个git push --quiet github. 但是,这种方式,github 无法识别镜像。

任何想法如何以 github 方式进行操作,例如“Mirrorred from”出现在存储库名称下方?

4

4 回答 4

122

根据与 GitHub 支持团队的沟通,我发现 GitHub 目前没有为用户提供以这种方式镜像存储库的直接机制。

但是,可以要求 GitHub 为属于组织的存储库安装此服务。然后,GitHub 将现有存储库配置为这样的镜像,并以它们拥有的总体镜像数量的函数的间隔从其中提取。

编辑:正如 Stuart 指出的,GitHub 不再接受镜像任意存储库的请求。剩下的唯一选择是我在问题中发布的解决方案,即创建一个接收后挂钩以自动推送到您的 GitHub 存储库。

于 2012-07-10T19:32:15.247 回答
11

https://github.com/mirrors的当前内容来看,GitHub 似乎不再做“官方镜像”,因为今天大多数希望将其代码镜像到 GitHub 上的项目只是为其创建一个组织,例如Git 本身.

还有一个功能请求:https ://github.com/isaacs/github/issues/415

于 2014-08-16T12:38:47.483 回答
6

根据Importing a Git

出于演示目的,我们将使用:

  • 名为 extuser 的外部帐户
  • 一个名为 ghuser 的 GitHub 个人用户帐户
  • 一个名为 repo.git 的 GitHub 存储库

命令行:

# Makes a bare clone of the external repository in a local directory  
$ git clone --bare https://githost.org/extuser/repo.git

# Pushes the mirror to the new GitHub repository
$ cd *repo.git*
$ git push --mirror https://github.com/ghuser/repo.git

# Remove the temporary local repository.
$ cd ..
$ rm -rf repo.git
于 2016-05-29T15:48:57.250 回答
1

我使用了一个名为github-backup的工具并取得了一定的成功,即使不是镜像,至少也可以对 Github 用户或组织进行完整备份(包括问题和其他元数据)。引用自述文件

每次运行 github-backup 时,它都会在 GitHub 上找到任何新的分叉。它将使用诸如github_torvalds_subsurface. 它将从每个分叉中获取。

它从每个分支下载元数据。这存储在一个名为“github”的分支中。每个 fork 都有一个目录,比如torvalds_subsurface. 在目录里面会有一些文件,比如torvalds_subsurface/watchers. 可能还有更多目录,例如评论:torvalds_subsurface/comments/1.

您可以关注 github 分支的提交,以查看 GitHub 上随时间变化的信息。

github 分支中文件的格式目前是 Haskell 序列化数据类型。这是纯文本,如果你眯着眼睛也可以阅读。

限制包括:

  • 没有私有存储库支持
  • 没有像明星、追随者等“社交”的东西
  • 不支持对提交行的注释(还没有?)
  • 问题标签
于 2019-04-19T03:03:26.690 回答