将仓库迁移至代码托管平台
本实践将展示如何将您自有的本地仓库或云端仓库迁移至代码托管服务。
应用场景
随着“代码上云”浪潮的推动,仓库的自主迁移趋于常态化,代码托管针对准备进行仓库迁移的用户提供完整的操作指导,帮助您将仓库迁移至代码托管服务。
实现原理
代码托管服务(CodeArts Repo)结合仓库的存储方式提供以下迁移方案:
- HTTP在线导入
通过HTTP协议直接将您的远程仓库导入到代码托管中,全程线上操作,但导入仓库的时长会受到网络条件及仓库容量的影响。
仓库容量相对较大的云端仓库推荐使用Git客户端推送的方式进行迁移。
- Git客户端推送
通过使用Git客户端将本地仓库中的代码文件推送至代码托管服务。
- 将项目文件存放在本地计算机的用户,建议先将本地项目文件初始化成Git仓库,再使用Git客户端进行迁移。
- 新建仓库对于仓库容量相对较大的云端仓库,建议先将云端仓库克隆或下载到本地,再使用Git客户端进行迁移。
前提条件
HTTP在线导入
- 进入软件开发生产线首页,单击目标项目名称,进入项目。
- 单击菜单“代码 > 代码托管”,进入代码托管服务。
- 在代码托管仓库列表页,单击“普通新建”旁的图标,在下拉列表中单击“导入外部仓库”。
- 在“填写外部仓库信息”页面,根据实际情况填写以下参数。
表1 外部仓库参数说明 参数项
是否必填
说明
源仓库路径
是
填写源仓库的仓库地址,以(http://)或(https://)开头,以(.git)结尾。
源仓库访问权限
是
- 不需要用户名/密码:如果源仓库是开源仓库(公开仓),请勾选该选项。
- 需要用户名/密码:如果源仓库是私有仓库,请勾选该选项,并填写HTTPS克隆代码时的用户名及密码。
- 勾选“我已阅读并同意 《隐私政策声明》 和 《CodeArts服务使用声明》”,单击“下一步”。
- 在“创建仓库”页面,根据实际情况填写以下参数。
表2 字段说明 字段名称
是否必填
备注说明
代码仓库名称
是
请以字母、数字、下划线开头,名称还可包含点和连字符,但不能以.git、.atom结尾,限制200个字符。
描述
否
为您的仓库填写描述,限制2000个字符。
权限设置
否
- 将项目开发人员自动添加为该仓库成员。
项目经理默认自动添加为该仓库成员,勾选该选项将项目开发人员也自动添加为该仓库成员。
是否公开
是
可选择:
- 私有。
仓库仅对仓库成员可见,仓库成员可访问仓库或者提交代码。
- 公开只读。
仓库对所有访客公开只读,可以选择开源许可证作为备注。
分支设置
是
可选择同步源仓库的默认分支或全部分支。
增加定时同步
否
勾选“增加定时同步”功能:
- 每天自动从源仓库导入仓库的默认分支。
- 仓库将成为只读镜像仓库,不能写入,并且只同步当前创建仓库的默认分支对应的第三方仓库的分支。
- 将项目开发人员自动添加为该仓库成员。
- 单击“确定”,完成仓库导入,跳转到仓库列表页。
Git客户端推送(以Git Bash为例)
在进行Git Bash客户端推送之前请确保已在代码托管服务中配置SSH密钥或HTTPS密码。
- 进入目标代码托管服务。
- 将本地仓库初始化为Git仓库,用于与代码托管仓库进行关联。
在您的仓库中打开Git Bash客户端,执行以下命令:
git init
初始化成功如下图,此时当前文件夹已经是本地Git仓库了。
- 将本地仓库与代码托管仓库进行绑定。
- 进入代码托管仓库,获取仓库地址。
- 在本地使用remote命令,将本地仓库与代码托管仓库进行绑定。
git remote add 仓库别名 仓库地址
示例为:
git remote add origin git@*****/java-remote.git #复制使用时注意换成您自己的仓库地址
- 一般用origin作为仓库别名,因为当您从远程仓库clone到本地时,默认产生的别名就是origin,当然您也可以使用任意别名。
- 如果提示仓库名重复,更换一个即可。
- 无回显即为绑定成功。
- 将代码托管仓库master分支拉取到本地仓库。
此步骤主要是避免冲突。
git fetch origin master #复制使用时 注意是否需要将origin替换为您仓库的别名
- 将本地代码文件提交到master分支。
依次执行:
git add .
git commit -m "您的提交备注"
下图为成功的执行。
- 将本地master分支与代码托管master分支进行绑定。
git branch --set-upstream-to=origin/master master #复制使用时 注意是否需要将origin替换为您仓库的别名
成功执行如下图所示,提示您已经将合并后的仓库放在工作区与版本库。
- 合并代码托管仓库与本地仓库的文件,并存储在本地。
git pull --rebase origin master #复制使用时 注意是否需要将origin替换为您仓库的别名
成功执行如下图所示,提示您已经将合并后的仓库放在工作区与版本库。
- 将本地仓库推送覆盖代码托管仓库。
因为之前已经进行了绑定,直接push即可。
git push
成功后,再直接拉取pull,验证代码托管仓库与本地仓库版本相同,如下图。