当前位置:   article > 正文

git仓库完整迁移_git clone --mirror 版本库迁移

git clone --mirror 版本库迁移

将仓库进行完整迁移

一、git操作基础命令

  1. # 查看远程仓库地址
  2. git remote -v
  3. # 添加远程仓库
  4. git remote add [远程仓库别名] <远程仓库URL>
  5. # 修改指定远程仓库的push地址
  6. git remote set-url --push <远程仓库别名> <远程仓库URL>

二、仓库迁移

命令迁移有三种方案。

1. 直接PUSH
  1. # clone 仓库到本地
  2. $ git clone git@host:group1/repo.git && cd repo
  3. # 拉取分支和标签
  4. $ git pull && git pull --tags
  5. # 设置源
  6. $ git remote set-url origin git@host:group2/repo.git
  7. # 推送分支和标签
  8. $ git push && git push --tags
2. 镜像

可以将源端仓库,镜像克隆到本地,再镜像推送到目的端。

  1. $ git clone --mirror git@host:group1/repo.git
  2. $ git push --mirror git@host:group2/repo.git

3. 裸仓库

可以将源端仓库,克隆下来裸仓库,再镜像推送到目的端。

  1. $ git clone --bare git@host:group1/repo.git
  2. $ git push --mirror git@host:group2/repo.git

裸仓库是 git 中的一个概念,只要在克隆时加一个 -–bare 选项即可。裸仓库可以再次push到另一个源,所以可以完成我们仓库迁移的任务。

需要注意,克隆下来的裸仓库中只有 .git 内容,是没有工作目录的。这是不同于镜像仓库的地方。

三、批处理脚本

我们需要迁移的项目有几十个,所以我这边写了个简单的批处理脚本,在此也也分享给有需要的伙伴。

输入文件 repos.txt 中按行写入要迁移的仓库名称:

  1. repo1
  2. repo2
  3. repo3

Linux/MacOS 迁移脚本 migrate.sh

  1. #!/bin/bash
  2. remote_old=git@host1:group1
  3. remote_new=git@host2:group2
  4. while read repo
  5. do
  6. echo $repo
  7. git clone --bare "$remote_old/${repo}.git"
  8. cd "${repo}.git"
  9. git push --mirror "$remote_new/${repo}.git"
  10. cd ..
  11. rm -fr "${repo}.git"
  12. done < repos.txt

Windows 迁移脚本 migrate.bat

  1. @echo off
  2. set remote_old=git@host1:group1
  3. set remote_new=git@host2:group2
  4. set input_file=repos.txt
  5. SETLOCAL DisableDelayedExpansion
  6. FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ %input_file%"`) do (
  7. call :process %%a
  8. )
  9. goto :eof
  10. :process
  11. SETLOCAL EnableDelayedExpansion
  12. set "repo=!%1!"
  13. set "repo=!repo:*:=!"
  14. echo !repo!
  15. git clone --bare "%remote_old%/!repo!.git"
  16. cd "!repo!.git"
  17. git push --mirror "%remote_new%/!repo!.git"
  18. cd ..
  19. rmdir "!repo!.git"
  20. ENDLOCAL
  21. goto :eof

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/883209
推荐阅读
相关标签
  

闽ICP备14008679号