未执行Git LFS迁移,旧文件为何自动以LFS存储?
关于Git LFS未执行migrate却处理旧文件的疑问解答
问题解答
1. 未执行git lfs migrate,旧文件为何已用Git LFS存储?
当你执行git lfs track "*.jpg"设置跟踪规则后,Git LFS会对所有被git add操作纳入暂存区的匹配文件生效——不管这个文件是新创建的,还是仓库里已存在的旧文件。
你用git add -A把仓库里所有符合*.jpg规则的旧文件重新加入了暂存区,这时Git LFS会自动把这些文件替换成LFS指针文件,提交推送到GitHub后,自然会显示这些文件“Stored with Git LFS”。但要注意:这只是当前提交版本的文件用了LFS,仓库历史提交里的旧版本还是以普通Git文件的形式存在的。
2. 是文档有误还是对Git LFS逻辑理解有误?
是你对Git LFS的逻辑理解有偏差,文档描述没问题。
文档里说“仅匹配跟踪规则的新文件会用Git LFS存储”,其实针对的是从未提交过的全新文件;而git lfs migrate的真正作用是修改仓库的历史提交记录——把过去已经提交到Git仓库里的旧版本大文件替换成LFS指针,以此缩减整个仓库的历史体积。
你现在的操作是把现有文件的当前版本重新add并提交,这个场景不需要git lfs migrate,Git LFS会直接处理被重新纳入暂存的匹配文件,生成新的LFS指针提交。
内容的提问来源于stack exchange,提问作者Artorias
相关产品推荐
相关产品推荐

