场景:
git服务迁移,更换服务地址,保留分支、日志、标签、版本等
前提:
- 新建一个空文件夹(作为过渡操作文件夹,为了避免对原项目造成影响)。
- 新的git服务器无需初始化git目录
操作
- 克隆服务代码至空的文件夹中,
git clone https://github.com/...;(这里的地址为当前的git服务地址)
- 克隆完成后,进入项目文件夹,可以查看本地的项目分支,会发现只有一个master分支(目的需要拉去服务中所有分支),例:
git branch
- 拉取所有分支命令:
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
执行完成后,git branch 会发现所有的分支
- 上传到新的git服务器,前提需要添加新的源,当前的源可以使用以下命令查看
git remote 或者git remote -v
- 使用以下命令添加新的源,此时可以随便添加一个源名称,事后可以修改源名称,例,添加一个aorigin源,
这里的后面地址为新的git服务的地址
git remote add aorigin https://github.com/...
- 推送所有分支到新的git服务器
git push -u aorigin --all
- 移除旧的源,以及修改新源名称
git remote rm origin
git remote rename aorigin origin
- 到此新的git服务器的代码已经全部上传完毕,可以删除此临时过渡的项目文件夹
切换目录到原项目路径下,将原项目的git服务地址更换为新的git服务地址,
git remote set-url origin https://github.com/...(地址为新的git服务地址)