从git历史中删除指定目录
用 DVC 管理深度学习项目时,加入的数据集包含大量小文件,数据集没有做打包或压缩,直接以目录的形式存在与项目中,导致后续 git 有关的操作非常慢,DVC 操作也都非常慢。这严重影响工作效率。
数据集不属于需要经常修改的,因此完全可以打包压缩后放入项目再用DVC管理。而项目已经进行一段时间了,有代码修改的 git 提交记录,因此不能从头推倒重来。
git 提供了删除历史记录的功能。如下命令,可以把 datas 目录删除:
git filter-branch --index-filter "git rm --cached --ignore-unmatch datas" HEAD
删除历史记录后,再在本地新建 git 库去克隆删记录后的旧库。
mkdir ../new-project cd ../new-project git init git pull ../old-project HEAD
新的本地 git 库无法直接 push 到旧的远程 git 仓库,需要重新建一个空的远程 git 仓库,再 push 上去。