gitignore添加后不起作用原因之git永久删除文件

前言

.gitignore 在新建项目的时候就应该新建,如果你没建,首先请自我评判下,然后开始操作

当前版本缓存

最简单的就是,你发现的及时,本地和线上都是刚好是加入不能计入gtiignore的文件,只需要rm掉重新提交就行。

git rm -r –cached filePath 
git commit -m “remove xx”

一般这种情况基本不会发生,一般你发现的时候已经是好几个commit后了

已经好几个版本

git 的rm只会删除掉最近一次的版本,而不会删除掉历史版本的文件,所以当你提交的时候这个文件仍然会在。所以核心思想就是删除掉历史版本的该文件

  1. rm掉全部历史记录的本文件,可以使用通配符来简化删除过程
    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,注意放的是路径不是文件名称,如果是文件夹的话使用下面的命令
    git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all
    注:在windows的控制台会报一个bad revision 'rm',解决办法是把上边命令的单引号换成双引号
  2. 使用gc清理版本库
	rm -rf .git/refs/original/
	git reflog expire --expire=now --all
	git gc --prune=now
	git gc --aggressive --prune=now
  1. 强制推送
    git push origin master --force
  2. 可能要用的其他命令
    • 查看版本库里前三最大文件
      git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3
    • 通过上一命令查到的hash来找文件
      git rev-list --objects --all | grep 哈希值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值