清除git中不再跟踪的文件的方法

本文介绍如何使用Git从版本库中彻底移除文件及其所有历史记录,包括使用.gitignore忽略文件更新、从索引中移除文件以及通过过滤分支来清除版本库中的文件历史。

.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

完整步骤是:

  1. 从资料库中清除文件

    $ 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/*

  2. (可选)强制推送修改后的repo至远程仓库

    git push origin master --force --all 
    
  3. 清理和回收本地空间(释放.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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值