git迁移远程代码库(从remote a到 remote b)

本文介绍了一个如何高效地将多个包含丰富历史记录、分支和标签的Git项目从一个远程仓库迁移到另一个远程仓库的实际案例。通过具体的操作步骤和注意事项,强调了全局思考和正确规划的重要性,以避免重复工作和错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于git,大家都很熟悉,版本控制的不二人选。分散式的管理方式为人所喜欢,给人以方便。

博客新地址:https://yaoyuanyy.github.io

本文立足实际案例,可能这个案例对于应用开发的技术人员不是很常见,对于运维人员应当是必须的知识。如果你既是技术又是运维,那么恭喜你,你离大牛不远了

 

实际案例:

今天刚哥交给我一个任务:把项目集合(a,b,c,d,e,f每个都是一个项目应用)从我们部门的git远程库迁移到公司级别的远程库上。

开始我以为很简单:就像本地建个项目,然后提交到github上呗。后来仔细一想,不对啊,我的任务需要我把这些项目的历史记录都要同步到新的远程库B上,包括提交历史,分支,tags。提交历史好办,直接提交就可以了,但是分支和tags就难办了,每个项目都有那么多的分支、那么多的tags,我如果要一个个的add、commit、push,这样会疯的。

假如,项目a有本地分支和tag:

a-features-0.0.1
a-features-0.0.2
a-features-0.0.3
a-features-0.0.4
a-features-0.0.5
master

tag:
a-features-0.0.1
a-features-0.0.2
a-features-0.0.3

如果冒然开始操作,会是这样:

 

[test@yy]$ git checkout master
[test@yy]$ git remote add yy remote-rep-B.git
[test@yy]$ git push yy master

[test@yy]$ git checkout a-features-0.0.1
[test@yy]$ git remote add yy remote-rep-B.git
[test@yy]$ git push yy a-features-0.0.1

 

这样需要5次反复操作,还有tag呢,还有其他多个项目呢,每个项目又有那么多的分支和tag呢。
所以,这样做效率很低下,而且容易出错,a-features-0.0.1提到a-features-0.0.2这样的提错分支就麻烦了。

带着我的想法,开始度娘,搜了很多关键词,没有想要的答案。终于,在google上发现了惊喜,上代码:

在git-bash中输入下列命令

 

[test@yy]$ git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t' #配置命令:创建所有远程分支对应的本地分支,起了别名
[test@yy]$ git clone OLD_REPO_URL #从老的远程库克隆项目到本地
[test@yy]$ cd new-cloned-project #进入项目git中
[test@yy]$ git clone-branches #运行刚才配置的命令别名
[test@yy]$ git remote add newrepo NEW_REPO_URL #创建新的远程库
[test@yy]$ git push --all newrepo #把所有本地分支提交到新远程库的对应的远程分支上
[test@yy]$ git push --tags newrepo #把原来的所有tag提交到新远程库上

 

通过以上的命令,可以大大提高工作效率,确认又清晰。这个告诉我们一个通用的技巧:不要着急写代码,敲键盘。先全局思考,脑子里过一遍,看看你要这么做会不会产生问题,产生什么问题,怎么解决这个问题。这样,相信你最终的操作就很完善了

 

博客新地址:https://yaoyuanyy.github.io

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值