git仓库完整迁移(代码,分⽀,提交记录)
背景
我们公司使⽤Git进⾏版本控制,并使⽤gitlab搭建了公司的私有Git仓库,后期项⽬逐渐增多,项⽬⽼⼤为了统⼀项⽬权限管理,决定将不同项⽬统⼀放到⼀个Group中。
⼀旦进⾏项⽬迁移,项⽬的git远端地址会发⽣变化,现在项⽬正在开发当中,每个⼈都有⾃⼰独有的分⽀,所以这就⾯临了两个问题:
①项⽬迁移时间不能太差,否则会影响⼤家项⽬的开发进度。
②项⽬迁移必须完整,包括master代码,各个分⽀代码,提交记录必须保留。
解决⽅案
git常用指令通过百度,以及查阅官⽹⽂档,到了解决办法,通过简单的git命令即可完成。
使⽤到的命令共有三个:
克隆命令:
git clone --mirror
修改地址命令
git remote set-url –-push origin
推送命令
git push –-mirror
关于命令的详细解释,请各位参考官⽹⽂档
⾸先,你需要在gitlab中新建仓库。
第⼀步
通过clone命令将仓库镜像下载到本地,
git clone --mirror
第⼆步
进⼊本地镜像仓库:
cd <;仓库名称>
将仓库中的旧的远端地址更改为新仓库地址:
git remote set-url –-push origin
第三步
将修改后的Git镜像仓库推送到新的仓库:
git push –-mirror
⾄此,旧仓库已经完整推送到了新的代码仓库,commit记录和代码分⽀完整。
第四步
现在我们需要在尽量影响⼩的代价,让所有⼈修改本地代码的远端地址。
这个⽅法就多了,百度⼀堆⼀堆的。参考博客
git remote set-url origin
项⽬组所有的成员只需要在本地仓库执⾏上述命令即可。
效果
实践证明,⽤上述解决⽅案进⾏代码仓库平稳迁移,单个项⽬迁移过程最多只需要花费⼗分钟以内的时间,即可实现,保证了项⽬的开发效率和稳定。
遇到的问题
在将Git镜像推送到远端时,需要将gitlab仓库的Protected Branches关掉,参照下图指⽰即可完成操作
gitlab和GitHub⽀持保护分⽀,分⽀保护后,只有对应级别的⼈能够操作该分⽀。保证代码安全。
待探索问题
项⽬开发过程中,通常我们会借助于第三⽅⼯具进⾏代码审查,借助于第三⽅⼯具进⾏代码审查的项⽬,不清楚迁移后是否有⽅案能够保证审查记录不丢失。如果有朋友在实际⽣产环境正进⾏了验证,欢迎留⾔交流。
限于笔者技术⽔平有限,如果有什么问题欢迎⼤家留⾔。
参考博客
在此也感谢三位博主提供的解决⽅案。
Git 仓库的整体迁移
Git远程仓库地址变更本地如何修改
git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)
另外,下边这位仁兄的博客提供了其他种解决⽅案。⼤同⼩异,供⼤家参考:
Git仓库迁移的两种解决⽅案。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论