迁移git仓库已有文件到 lfs
问题背景 我已经有了一个 .gitattributes 文件,我希望将仓库中的大文件全部重写到 lfs 上 .gitattributes 文件样例如下: 1 2 3 4 assets/geolite2-asn-ipv4.mmdb filter=lfs diff=lfs merge=lfs -text assets/geolite2-asn-ipv6.mmdb filter=lfs diff=lfs merge=lfs -text assets/qqwry.dat filter=lfs diff=lfs merge=lfs -text assets/zxipv6wry.db filter=lfs diff=lfs merge=lfs -text 最终解决方案(TLDR) 1 2 3 4 5 6 7 # 首先安装 git-filter-repo uv tool install git-filter-repo # 然后将 .gitattributes 添加到每个提交 HASH=$(git hash-object -w "$(pwd)/.gitattributes") git filter-repo --force --commit-callback "commit.file_changes.append(FileChange(b'M', b'.gitattributes', b'${HASH}', b'100644'))" # 然后使用 --fixup 根据 .gitattributes 文件转换为 lfs 格式 git lfs migrate import --everything --fixup 注意:该方案仅适用于 gitattributes 文件中不包含 exclude 规则的情况 ...