Skip to main content

复制仓库

要维护存储库的镜像而不对其进行复刻,可以运行特殊的克隆命令,然后镜像推送到新存储库。

Platform navigation

注意: 如果你在其他版本控制系统上托管了项目,则可以使用 GitHub Importer 工具自动将项目导入到 GitHub。 有关详细信息,请参阅“关于 GitHub 导入工具”。

在将原始存储库推送到存储库的新副本或镜像之前,必须在 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 Large File Storage 对象的仓库。

  1. 打开终端终端Git Bash

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

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

    cd OLD-REPOSITORY.git
    
  4. 拉取仓库的 Git Large File Storage 对象。

    git lfs fetch --all
    
  5. 镜像推送至新仓库。

    git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
    
  6. 将仓库的 Git Large File Storage 对象推送至镜像。

    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
    

延伸阅读