有一个需求,在gitlab上有一个仓库,其中保留有大量的分支和tag信息;现在该仓库准备废弃,迁移到另外的仓库中,但是所有历史记录也要保存在新的仓库中。
gitlab上如果直接fork会把仓库fork成为自己私有的,这不符合要求。
git本身支持一个本地仓库对应多个远程仓库,只要使用下面命令即可
git add name url
但是 git push 时,默认只能推送当前分支,当然也可以使用 -all 推送所有分支,不过这样的操作也只能推送本地已经创建出来的分支,而新拉取的仓库在刚开始时默认只有master一个分支,总不能手动一个个创建并关联远程吧。
其实这种根据远程分支创建所有本地分支的操作可以通过脚本创建,如果使用shell,可以这样操作:
第一步 创建所有分支
git branch -r | grep -v '\->' | while read remote