目录

git仓库镜像和迁移

会遇到需要完整迁移仓库的需求,包括所有分支,所有的提交记录。有如下几种需求

  • 项目更换到新仓库地址,需要将老仓库地址迁移,同时保留提交记录和分支
  • 想镜像一个仓库做加速使用,如github做主仓库,gitee做一个镜像做同步

完整镜像迁移仓库

  1. 打开命令行工具。

  2. 克隆老的仓库。

    1
    
    $ git clone --bare https://github.com/exampleuser/old-repository.git
    
  3. 镜像推送到新的仓库

    1
    2
    
    $ cd old-repository
    $ git push --mirror https://github.com/exampleuser/new-repository.git
    
  4. 删除之前创建的临时老仓库文件夹。

    1
    2
    
    $ cd ..
    $ rm -rf old-repository
    

完整镜像迁移包含Git大文件(Git LFS)的仓库

  1. 打开命令行工具。

  2. 克隆老的仓库。

    1
    
    $ git clone --bare https://github.com/exampleuser/old-repository.git
    
  3. 进入老仓库目录。

    1
    
    $ cd old-repository
    
  4. 拉取老仓库的 Git 大文件。

    1
    
    $ git lfs fetch --all
    
  5. 镜像推送到新仓库。

    1
    
    $ git push --mirror https://github.com/exampleuser/new-repository.git
    
  6. 将 Git 大文件推送到新仓库。

    1
    
    $ git lfs push --all https://github.com/exampleuser/new-repository.git
    
  7. 删除之前创建的临时老仓库文件夹。

    1
    2
    
    $ cd ..
    $ rm -rf old-repository
    

镜像一个同步仓库

类似gitee提供的仓库同步,可以从主仓库同步更新到同步仓库

  1. 打开命令行工具。

  2. 克隆主仓库。

    1
    
    $ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git
    
  3. 将推送url设置为同步仓库的地址。

    1
    2
    
    $ cd repository-to-mirror
    $ git remote set-url --push origin https://github.com/exampleuser/mirrored
    
  4. 从主仓库进行同步

    1
    2
    
    $ git fetch -p origin
    $ git push --mirror
    

参考:

Duplicating a repository - GitHub Docs