git中永久删除文件

git中永久删除文件

今天看到自己两年前在 Github 写的个小项目上了两位数的forkstar,于是想看看原来写的还能不能用,当然也想看看以前自己写的代码还能不能看懂,于是git clone了一下,发现奇慢(题主预期是瞬间):

~ git clone git@github.com:ckeyer/beewechat.git -b master
Cloning into 'beewechat'...
remote: Counting objects: 252, done.
remote: Total 252 (delta 0), reused 0 (delta 0), pack-reused 252
Receiving objects: 100% (252/252), 21.72 MiB | 740.00 KiB/s, done.
Resolving deltas: 100% (138/138), done.
Checking connectivity... done.

记得之前没几个文件丫,为什么感觉好大:

~ du -sh .
 35M

真的好大,ls后发现,当年的题主是把本地调试的二进制程序也放到git里了,也是当时年轻不懂事。

So…

现在删掉这个文件然后commit,并不会有什么用,因为这个文件已经纳入到了版本控制里了。

只能通过如下操作了:

~ git filter-branch --tree-filter 'rm -f beeweichat' HEAD
~ git update-ref -d refs/original/refs/heads/master
~ rm -rf .git/logs
~ git prune
~ git gc
~ git push origin master -f

此时发现文件夹小到了 22M, 明显还有,于是查看了一下tag,发现之前有打过几个版本的tag,类似:

~ git checkout v1.1
~ git filter-branch --tree-filter 'rm -f beeweichat' HEAD
~ git update-ref -d refs/original/HEAD
~ rm -rf .git/logs
~ git prune
~ git gc
~ git tag v1.1 -f

同样的方式更新了几个tag,然后重新推到github

git push origin --tags -f

最后重新clone了一下该项目,发现du -sh –> 388K .

— END —

Spread the love
Comments are closed.