迁移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 规则的情况 ...

二月 5, 2026 · 2 分钟

git彻底删除或变更子模块

今天遇到一个很怪的问题,我想把我的一个子模块切换到另一个上游,我按照网上的方法删除子模块然后新建后,这个子模块依旧跟踪着我先前的上游。自己摸索了一下,可能方法比较傻,不过是可行的,希望能给大家一些帮助。 ...

五月 23, 2019 · 1 分钟

使用Travis CI自动部署博客到github pages和coding pages

每次换系统或换电脑之后重新部署博客总是很苦恼?想像jekyll那样,一次性部署完成后,以后本地不用安装环境直接 git push 就能生成博客?那我推荐你应该使用使用 Travis CI了。 这篇文章我们来讲讲如何利用 Travis CI把你 push 上去的博客源文件直接生成可访问的站点,并且同步部署到 github pages 和 coding pages 。 这篇文章假设你已经对这些采用 git 版本控制系统的静态博客托管服务有所了解,并且知道怎么去简单的使用 git 以及了解 hexo 写博客发布到这些 pages 服务的流程。因此本文会写的较为简略,旨在指出关键的地方以及我遇到的问题、问题产生的原因和提供的解决方案,希望能够帮助到大家。 ...

九月 7, 2018 · 5 分钟

一键git push脚本(python版)

有时候感觉项目push上去每次都敲那么几个命令挺烦人的,可以用这个脚本来代替手工 ...

八月 22, 2018 · 1 分钟

git忽略对已入库文件的修改

项目开发过程中,会遇到本地配置文件每个开发人员不同的情况,但如果遇到类似数据库配置这种最终需要加入 git 版本控制的配置,则会陷入两难境地。要么不跟踪,要么有人提交后其他人同步下来必须手动修改,非常麻烦。其实,对于已被纳入版本管理的文件,git 也提供了很好的解决办法。 ...

八月 22, 2018 · 1 分钟