含LFS的Bitbucket仓库向GitHub迁移(保留分支标签历史)分步方案
Bitbucket 到 GitHub 完整迁移方案(含LFS问题解决,保留全分支/标签/历史)
分步操作流程
1. 克隆Bitbucket仓库镜像
先创建原仓库的完整镜像克隆,确保所有分支、标签、提交历史都被复制:
git clone --mirror <你的Bitbucket仓库URL> cd <仓库名>.git
2. 解决Git LFS相关的预提交钩子问题
针对迁移时被预提交钩子阻止的情况,按以下步骤处理:
- 确认仓库是否包含LFS文件:
有输出则说明存在LFS追踪文件。git lfs ls-files - 临时禁用本地Git钩子(迁移场景无需触发钩子校验):
- Linux/macOS:
git config core.hooksPath /dev/null - Windows:
git config core.hooksPath NUL
- Linux/macOS:
- 确保本地已安装Git LFS并完成初始化:
git lfs install
3. 添加GitHub远程仓库地址
将GitHub仓库设为新的推送目标:
git remote add github <你的GitHub仓库URL>
验证远程源配置:
git remote -v
输出应包含bitbucket(原地址)和github(新地址)两个远程条目。
4. 推送所有内容到GitHub
- 先推送所有分支、标签和提交历史:
git push github --mirror - 若存在LFS文件,单独推送LFS对象:
git lfs push github --all
5. 验证迁移结果
- 登录GitHub查看目标仓库,确认所有分支、标签都已同步
- 随机检查多个提交记录,确保历史完整无缺失
- 测试LFS文件的下载和访问,确认可正常使用
注意事项
- 迁移前确保GitHub目标仓库为空(不要提前初始化README、LICENSE等文件),否则会触发推送冲突
- 迁移期间禁止向原Bitbucket仓库提交新内容,若有新提交需重新克隆镜像后再次推送
- 私有仓库迁移后,检查GitHub仓库的权限设置,确保团队成员访问权限正确
- 迁移完成后建议将原Bitbucket仓库设置为只读,避免后续误操作
内容的提问来源于stack exchange,提问作者JayDee
相关产品推荐
相关产品推荐

