Git无法取消文件跟踪,执行git rm --cached后push仍上传大文件怎么办
仓库已有大文件不参与本地推拉、同时保留在远程的解决方案
你之前执行git rm --cached <file>并提交的操作不符合需求:该操作会生成「删除对应文件」的提交,你push时相当于要同步删除远程仓库的该文件,这就是你看到push时仍有内容上传的原因,也会破坏公共仓库的文件保留需求,请先回退这个错误提交:
git reset HEAD~1
如果已经将删除提交推送到了远程个人分支,请先撤销远程分支的该提交,避免合并后误删公共仓库文件。
根据你的使用场景选择对应方案即可:
场景1:本地已存在该大文件,仅需忽略推拉操作
执行以下命令告诉Git跳过对该文件的所有变更跟踪:
git update-index --skip-worktree <替换为目标文件的相对路径>
该配置仅在你本地生效:
- 你对该文件的所有本地修改都不会被Git识别,push时不会上传任何该文件的相关内容
- pull时不会用远程的该文件版本覆盖你的本地文件
- 远程仓库的该文件会完整保留,不影响其他协作者的下载使用
如果后续需要恢复对该文件的跟踪,执行:
git update-index --no-skip-worktree <替换为目标文件的相对路径>
场景2:尚未拉取该文件,不想下载大文件到本地
使用Git稀疏检出功能过滤掉该文件的拉取操作:
- 开启稀疏检出配置:
git config core.sparseCheckout true - 编辑仓库根目录下的
.git/info/sparse-checkout文件,先写入你需要正常拉取的路径规则,最后添加一行排除规则(!开头代表排除对应路径):
示例:如果要排除的文件是!<替换为目标大文件的相对路径>dataset/large_model.pt,就在文件最后添加!dataset/large_model.pt - 后续执行
git pull操作时,Git只会拉取你指定范围内的文件,不会下载被排除的大文件。
内容的提问来源于stack exchange,提问作者Borut Flis
相关产品推荐
相关产品推荐

