.gitignore可以控制执行git add时新文件是否被跟踪,但对已经跟踪的文件无效。
要停止跟踪文件,需要将其从索引中删除:
git rm --cached <file>
但是,即使文件已经被停止跟踪,其修改历史仍被记录在版本库中,删除这些不再需要的记录可缩小版本库体积。
具体方法详见Git如何永久删除文件(包括历史记录)一文。
需要注意的是,原文第一步执行的命令存在typo,应使用双引号:
$ git filter-branch --force --index-filter "git rm --cached --ignore-unmatch path-to-your-remove-file" --prune-empty --tag-name-filter cat -- --all
完整步骤是:
-
从资料库中清除文件
$ git filter-branch --force --index-filter "git rm --cached --ignore-unmatch path-to-your-remove-file" --prune-empty --tag-name-filter cat -- --all替换path-to-your-remove-file为需清理的文件,如results/*
-
(可选)强制推送修改后的repo至远程仓库
git push origin master --force --all -
清理和回收本地空间(释放.git中的无用缓存)
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now
注:git bash切换盘符的方法
cd /d
本文介绍如何使用Git从版本库中彻底移除文件及其所有历史记录,包括使用.gitignore忽略文件更新、从索引中移除文件以及通过过滤分支来清除版本库中的文件历史。

748

被折叠的 条评论
为什么被折叠?



