从一个分支中移除Git LFS文件
我有一个包含Git LFS文件的仓库。
我们在Artifactory的工具链上遇到了一些问题,正在评估从仓库中移除LFS文件,以看看是否能解开构建问题。
然而,与其彻底取消跟踪,我们计划在一个私有分支上仅移除LFS文件,使其暂时以普通Git文件的形式存在。
有没有办法做到这一点?也就是说不修改主仓库,只在私有分支上做实验?
到目前为止,我想到的步骤是:
- 检出目标分支(一个我想在其中验证这个工作流的新私有分支)
git checkout <branch-name> - 将文件或模式从LFS中取消跟踪
git lfs untrack "path/to/file.ext"
或者对于glob模式:
git lfs untrack "*.jpg"
这会从.gitattributes中移除条目。
- 从索引中移除LFS指针
git rm --cached "path/to/file.ext"--cached标志仅从Git的索引中移除——该文件仍然保留在磁盘上。 - 将文件重新作为普通的Git对象添加
git add "path/to/file.ext"git add .gitattributes如果.gitattributes中没有LFS规则,Git将存储完整的文件内容而不是一个指针。 - 提交
git commit -m "Untrack file from LFS on this branch" - 验证
git lfs ls-files输出中不应再出现该文件。
看起来正确吗? 我不想不小心搞乱已经在远程分支上的工作。
解决方案
对你的远程 main 分支来说,这是安全的,因为改动是隔离的。
然而,你原本的命令不会起作用,因为Git只会重新提交这段3 行的LFS文本指针。
只需把 git rm --cached 命令换成 git add --renormalize .。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。