迁移带有 git lfs 功能的 github 仓库

总结:

create git 仓库,不带任何附件;

勾选 allow lfs.

bash 复制代码
git clone --mirror https://github.com/你的用户名/你的仓库.git
cd 你的仓库.git
git lfs fetch --all
git remote set-url origin http://bitbucket.org/你的工作区/你的新仓库.git
git push --mirror
git lfs push --all origin

注意:

1. 服务器上的仓库设置 allow lfs 勾选

否则会出现 类似这样的错误:

batch response: Git LFS is disabled0 B | 0 B/s

batch response: Git LFS is disabled

Uploading LFS objects: 0% (0/1), 0 B | 0 B/s, done.

2.注意使用的网络协议

使用 http协议,ssh 不与 lfs 配合。

git remote set-url origin http://bitbucket.org/你的工作区/你的新仓库.git

迁移一个带有 Git LFS 的仓库,核心挑战是 Bitbucket 自带的导入工具 (Import Tool) 不会导入 LFS 文件对象 -7。因此,手动镜像克隆并推送(Manual Mirror Push)是最可靠、也是官方推荐的方法 -4。

详细操作步骤

在终端中逐条执行以下命令。

1. 镜像克隆 GitHub 仓库

这一步会从 GitHub 把所有东西完整地"复制"到你电脑上,包括所有的分支和标签。

bash 复制代码
git clone --mirror https://github.com/你的用户名/你的仓库.git
cd 你的仓库.git

--mirror 参数会创建一个裸仓库(bare repository),这是完整迁移的最佳起点-4-5。

2. 拉取所有 LFS 文件

这是最关键的一步。因为普通克隆默认只下载当前版本的文件指针,我们需要显式地把所有 LFS 文件(Git 大文件存储对象)的历史版本也都拉到本地来-2-7。

bash 复制代码
git lfs fetch --all

这个命令执行完后,你的本地才算真正拥有了 GitHub 上的所有大文件实体。

3. 准备 Bitbucket 仓库
  • 登录 Bitbucket,创建一个空的新仓库。

  • 不要勾选"创建 README"、".gitignore"或"许可证"等初始化选项,否则会因产生初始提交而导致推送冲突。

  • 创建完成后,复制它提供的 HTTPS 或 SSH 地址。

4. 推送至 Bitbucket

现在,我们把本地完整的环境"映射"到 Bitbucket 上。

首先,修改远程仓库地址:

bash 复制代码
git remote set-url origin https://bitbucket.org/你的工作区/你的新仓库.git

然后,执行推送。这是另一个核心命令,它会将所有引用(分支、标签)和 LFS 对象都推送到 Bitbucket。

bash 复制代码
git push --mirror
git lfs push --all origin

按照这个顺序执行,可以确保 Git 元数据和 LFS 大文件都能稳定上传-2。

常见问题与注意事项

  • 历史中的大文件 :如果你早期的提交里曾有大文件(此时还未使用 LFS),直接迁移可能会遇到大小限制。建议在迁移前先用命令 git lfs migrate import --include="*.zip,*.psd" --everything 将历史中的特定文件类型也转交给 LFS 管理-3-9。

  • 团队协作中断:迁移操作会重写仓库历史吗?

    • 上面演示的标准流程(clone --mirror + push --all)是无损的。它只是把 GitHub 上的数据完整地复制到 Bitbucket,不会改变提交的 SHA-1 值,因此对团队成员来说是透明的。

    • 如果你执行了上一条提到的 migrate 命令来重写历史,那所有同事都需要重新克隆仓库,适合在"搬迁窗口期"操作-9。

  • 验证迁移结果 :推送完成后,可以在 Bitbucket 网页端查看源代码和提交记录。你也可以重新 Clone 一份到新文件夹,运行 git lfs ls-files 查看 LFS 文件是否完整-4。

  • 保留元数据 :Issues、Pull Requests、Wiki 等数据无法通过 Git 命令迁移。如果这些也需要保留,只能借助 GitHub 和 Bitbucket 的官方导入/导出工具,或者考虑使用第三方迁移服务-4-6。

相关推荐
miofly2 小时前
Karpathy:75%人口未接触LLM,约5000人可用的内部系统已让数千智能体协作数周
开源·github
zjh10242 小时前
和 AI 一起写了个 MCP 客户端,结果最难的不是协议
github
溪语流沙2 小时前
【Web全栈进阶】OAuth实战——GitHub第三方登录
前端·python·github
逛逛GitHub3 小时前
最近逛 GitHub ,挖到 3 个给力的开源项目,第一个比较硬核。
github
u1301303 小时前
GitHub 热榜项目:周榜(2026-10-11)
人工智能·驱动开发·github
WindrunnerMax3 小时前
以轻量 LoopAgent 替代 RAG 实现文档检索
人工智能·架构·github
做运维的阿瑞3 小时前
利用GitHub配置镜像加速,解决 Docker镜像拉取问题
运维·docker·容器·github
怕浪猫4 小时前
AI Agent 的安全怎么保障?面试最后一关的终极问题
算法·面试·github
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(97):MCMA——让 Agent 学会如何抽象记忆,实现跨任务经验迁移
论文阅读·人工智能·学习·开源·github