You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bitbucket Pipelines将含大文件的仓库从Bitbucket同步备份到GitHub

问题根因

GitHub对普通Git提交的单文件大小限制为100MB,超出该大小的文件无法直接通过普通git push推送到仓库,必须使用Git LFS(大文件存储)服务存储超大型文件。

解决方案

你需要在两端仓库配置Git LFS,同时修改Bitbucket Pipelines配置适配LFS推送,具体步骤如下:

步骤1:Bitbucket源仓库配置LFS

  1. 本地安装Git LFS工具后,进入仓库本地目录执行初始化命令:
    git lfs install
  2. 追踪所有超大型文件,示例如下(可根据实际文件后缀调整规则):
git lfs track "*.bundle"
git lfs track "*.deb"
  1. 将生成的.gitattributes配置文件提交并推送到Bitbucket仓库:
git add .gitattributes
git commit -m "chore: 配置Git LFS追踪大文件"
git push
  1. 如果大文件已经存在于历史提交中,需要执行迁移命令将历史中的大文件批量转为LFS存储:
    git lfs migrate import --include="*.bundle,*.deb" --everything
    迁移完成后强制推送到Bitbucket即可,如果是多人协作仓库,需要通知所有成员拉取最新的仓库分支,避免提交冲突。

步骤2:GitHub目标仓库配置

  1. 确保目标GitHub仓库已开启Git LFS功能(GitHub所有仓库默认开启LFS支持,无需额外手动开启)。
  2. 确认Bitbucket Pipelines使用的SSH公钥已经添加到你的GitHub账户的SSH密钥列表中,拥有仓库的读写权限。

步骤3:修改Bitbucket Pipelines配置

更新bitbucket-pipelines.yml配置如下:

clone:
  depth: full
  lfs: true # 开启LFS完整克隆

pipelines:
  default:
    - step:
        image: atlassian/default-image:3 # 内置Git LFS环境,无需额外安装
        script:
          - git lfs install
          - git lfs fetch --all
          # 配置LFS推送目标地址
          - git config lfs.url https://github.com/gitusername/repo.git/info/lfs
          # 推送全部分支代码
          - git push --force git@github.com:gitusername/repo.git --all
          # 推送全部LFS对象
          - git lfs push --all git@github.com:gitusername/repo.git

可选替代方案

如果不需要在备份仓库中保留大文件,可以使用git filter-repo工具彻底删除仓库历史和当前版本中的所有大文件,无需配置LFS即可完成同步。

注意事项
  • GitHub免费版默认提供1GB LFS存储额度和1GB/月的LFS流量额度,超出额度需要购买额外的LFS资源包。
  • 首次开启LFS并同步历史提交后,后续的增量提交会自动适配LFS规则,无需手动调整。

内容的提问来源于stack exchange,提问作者Hemant Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:15:03