git作为最主流的代码管理工具,使用人数非常广。但是正是由于使用人数广,很多技术不扎实的新手,容易错误的上传一些与代码无关的文件。
如果遇到这样的情况,我们就需要删除文件,下面我就来介绍下删除文件的命令:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件路径' --prune-empty --tag-name-filter cat -- --all
filter-branch 是让git重写每一个分支。
--force 假如遇到冲突也让git强制执行。
--index-filter 选项指定重写的时候应该执行什么命令,要执行的命令紧跟在它的后面,在这里就是git rm --cached --ignore-unmatch 文件路径,让git删除掉缓存的文件,如果有匹配的话。
--prune-empty 选项告诉git,如果因为重写导致某些commit变成了空(比如修改的文件全部被删除),那么忽略掉这个commit。
--tag-name-filter 表示对每一个tag如何重命名,重命名的命令紧跟在后面,当前的tag名会从标注输入送给后面的命令,用cat就表示保持tag名不变。
紧跟着的--表示分割符,最后的--all表示对所有的文件都考虑在内。
如果工程没有设置tag,可以就用
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件路径' --prune-empty
完成后将git仓重新打包,命令如下:
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now
最后使用git push命令重新上传,git仓的体积就能减小了。
文章作者:沃航科技