从一个分支中移除Git LFS文件

编程语言 2026-07-10

我有一个包含Git LFS文件的仓库。
我们在Artifactory的工具链上遇到了一些问题,正在评估从仓库中移除LFS文件,以看看是否能解开构建问题。

然而,与其彻底取消跟踪,我们计划在一个私有分支上仅移除LFS文件,使其暂时以普通Git文件的形式存在。

有没有办法做到这一点?也就是说不修改主仓库,只在私有分支上做实验?

到目前为止,我想到的步骤是:

  1. 检出目标分支(一个我想在其中验证这个工作流的新私有分支) git checkout <branch-name>
  2. 将文件或模式从LFS中取消跟踪 git lfs untrack "path/to/file.ext"

或者对于glob模式:

git lfs untrack "*.jpg" 这会从.gitattributes中移除条目。

  1. 从索引中移除LFS指针 git rm --cached "path/to/file.ext" --cached标志仅从Git的索引中移除——该文件仍然保留在磁盘上。
  2. 将文件重新作为普通的Git对象添加 git add "path/to/file.ext" git add .gitattributes 如果.gitattributes中没有LFS规则,Git将存储完整的文件内容而不是一个指针。
  3. 提交 git commit -m "Untrack file from LFS on this branch"
  4. 验证 git lfs ls-files 输出中不应再出现该文件。

看起来正确吗? 我不想不小心搞乱已经在远程分支上的工作。

解决方案

对你的远程 main 分支来说,这是安全的,因为改动是隔离的。

然而,你原本的命令不会起作用,因为Git只会重新提交这段3 行的LFS文本指针。

只需把 git rm --cached 命令换成 git add --renormalize .

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章