跳至主要内容

复制存储库

若要维护存储库的镜像而不进行分叉,你可以运行一个特殊的克隆命令,然后将镜像推送到新存储库。

平台导航

注意:如果你在其他基于 Git 的托管服务上托管项目,则可以使用 GitHub Importer 工具将项目自动导入 GitHub。有关更多信息,请参阅“关于 GitHub Importer”。

在你将原始存储库推送到新副本或存储库的镜像之前,你必须在 GitHub.com 上创建新存储库。在这些示例中,exampleuser/new-repositoryexampleuser/mirrored 是镜像。

镜像存储库

  1. 打开 终端终端Git Bash

  2. 创建存储库的裸克隆。

    git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
    
  3. 将镜像推送到新存储库。

    cd OLD-REPOSITORY.git
    git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  4. 删除你之前创建的临时本地存储库。

    cd ..
    rm -rf OLD-REPOSITORY.git
    

镜像包含 Git 大文件存储对象存储库

  1. 打开 终端终端Git Bash

  2. 创建存储库的裸克隆。将示例用户名替换为拥有存储库的个人或组织的名称,并将示例存储库名称替换为要复制的存储库的名称。

    git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
    
  3. 导航到你刚刚克隆的存储库。

    cd OLD-REPOSITORY.git
    
  4. 拉取存储库的 Git 大文件存储对象。

    git lfs fetch --all
    
  5. 将镜像推送到新存储库。

    git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  6. 将存储库的 Git 大文件存储对象推送到你的镜像。

    git lfs push --all https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  7. 删除你之前创建的临时本地存储库。

    cd ..
    rm -rf OLD-REPOSITORY.git
    

在其他位置镜像存储库

如果你想在其他位置镜像存储库,包括从原始存储库获取更新,你可以克隆一个镜像并定期推送更改。

  1. 打开 终端终端Git Bash

  2. 创建存储库的裸镜像克隆。

    git clone --mirror https://github.com/EXAMPLE-USER/REPOSITORY-TO-MIRROR.git
    
  3. 将推送位置设置为你的镜像。

    cd REPOSITORY-TO-MIRROR
    git remote set-url --push origin https://github.com/EXAMPLE-USER/MIRRORED
    

    与裸克隆一样,镜像克隆包括所有远程分支和标签,但每次获取时所有本地引用都会被覆盖,因此它将始终与原始存储库相同。设置推送的 URL 简化了对镜像的推送。

  4. 要更新你的镜像,请获取更新并推送。

    git fetch -p origin
    git push --mirror
    

进一步阅读