注意:如果您在另一个基于 Git 的托管服务上托管了项目,可以使用 GitHub Importer 工具自动将您的项目导入 GitHub。有关更多信息,请参阅“关于 GitHub Importer”。
在将原始仓库推送到新的副本(或仓库的镜像)之前,您必须在 GitHub.com 上创建新的仓库。在这些示例中,exampleuser/new-repository
或 exampleuser/mirrored
是镜像。
镜像仓库
-
打开 终端终端Git Bash。
-
创建一个裸仓库克隆。
git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
-
镜像推送到新仓库。
cd OLD-REPOSITORY.git git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
-
删除之前创建的临时本地仓库。
cd .. rm -rf OLD-REPOSITORY.git
镜像包含 Git 大文件存储对象的仓库
-
打开 终端终端Git Bash。
-
创建一个裸仓库克隆。将示例用户名替换为拥有仓库的个人或组织的名称,并将示例仓库名称替换为要复制的仓库的名称。
git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
-
导航到刚刚克隆的仓库。
cd OLD-REPOSITORY.git
-
拉取仓库的 Git 大文件存储对象。
git lfs fetch --all
-
镜像推送到新仓库。
git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
-
将仓库的 Git 大文件存储对象推送到镜像。
git lfs push --all https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
-
删除之前创建的临时本地仓库。
cd .. rm -rf OLD-REPOSITORY.git
镜像另一个位置的仓库
如果要镜像另一个位置的仓库,包括从原始仓库获取更新,可以克隆镜像并定期推送更改。
-
打开 终端终端Git Bash。
-
创建一个裸镜像克隆。
git clone --mirror https://github.com/EXAMPLE-USER/REPOSITORY-TO-MIRROR.git
-
将推送位置设置为镜像。
cd REPOSITORY-TO-MIRROR git remote set-url --push origin https://github.com/EXAMPLE-USER/MIRRORED
与裸克隆一样,镜像克隆包含所有远程分支和标签,但所有本地引用将在每次获取时被覆盖,因此它将始终与原始仓库相同。设置推送的 URL 简化了向镜像推送操作。
-
要更新镜像,请获取更新并推送。
git fetch -p origin git push --mirror