git仓库镜像和迁移
目录
会遇到需要完整迁移仓库的需求,包括所有分支,所有的提交记录。有如下几种需求
- 项目更换到新仓库地址,需要将老仓库地址迁移,同时保留提交记录和分支
- 想镜像一个仓库做加速使用,如github做主仓库,gitee做一个镜像做同步
完整镜像迁移仓库
-
打开命令行工具。
-
克隆老的仓库。
1
$ git clone --bare https://github.com/exampleuser/old-repository.git
-
镜像推送到新的仓库
1 2
$ cd old-repository $ git push --mirror https://github.com/exampleuser/new-repository.git
-
删除之前创建的临时老仓库文件夹。
1 2
$ cd .. $ rm -rf old-repository
完整镜像迁移包含Git大文件(Git LFS)的仓库
-
打开命令行工具。
-
克隆老的仓库。
1
$ git clone --bare https://github.com/exampleuser/old-repository.git
-
进入老仓库目录。
1
$ cd old-repository
-
拉取老仓库的 Git 大文件。
1
$ git lfs fetch --all
-
镜像推送到新仓库。
1
$ git push --mirror https://github.com/exampleuser/new-repository.git
-
将 Git 大文件推送到新仓库。
1
$ git lfs push --all https://github.com/exampleuser/new-repository.git
-
删除之前创建的临时老仓库文件夹。
1 2
$ cd .. $ rm -rf old-repository
镜像一个同步仓库
类似gitee提供的仓库同步,可以从主仓库同步更新到同步仓库
-
打开命令行工具。
-
克隆主仓库。
1
$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
-
将推送url设置为同步仓库的地址。
1 2
$ cd repository-to-mirror $ git remote set-url --push origin https://github.com/exampleuser/mirrored
-
从主仓库进行同步
1 2
$ git fetch -p origin $ git push --mirror
参考: