Git 仓库迁移实战指南
把代码从一个托管平台搬到另一个,是开发过程中常遇到的需求。比如从 GitHub 转到自建服务器,或者更换云厂商。核心思路是利用 Git 的镜像功能,确保所有分支、标签和提交历史都无损迁移。
准备工作
首先,你需要拥有原仓库和新仓库的管理员权限。假设原仓库地址是 https://github.com/user/project.git,新仓库地址是 [email protected]/user/new-project.git。
步骤一:创建裸克隆
直接在本地创建一个'裸'版本库。裸库不包含工作区,只包含版本库数据,非常适合做镜像传输。
git clone --bare https://github.com/user/project.git
这里的 --bare 参数很关键,它告诉 Git 不要生成 .git 目录下的工作文件,直接克隆整个仓库结构。
步骤二:镜像推送到新仓库
进入刚才创建的裸库目录,执行镜像推送。这会将所有引用(refs)同步到新服务器。
cd project.git
git push --mirror [email protected]/user/new-project.git
注意 --mirror 选项。普通的 push 可能只推送默认分支,而 --mirror 会推送所有分支、标签和远程跟踪信息,保证新旧仓库完全一致。
步骤三:清理与验证
推送成功后,确认新仓库能正常 Clone。如果没问题,就可以删除本地的裸库副本了。
rm -rf project.git
最后,尝试从新地址克隆一份普通副本,检查提交历史和分支是否完整。
git clone [email protected]/user/new-project.git
注意事项
- 权限问题:确保新仓库已创建且你有写入权限。
- 大小限制:如果仓库非常大,推送过程可能需要较长时间,请保持网络稳定。
- 后续操作:迁移完成后,记得更新团队成员的远程地址配置,避免他们还在拉取旧仓库的数据。
这样一套流程下来,你的代码资产就安全地转移到了新环境。


