清理git提交历史中的无用文件

背景

对某库提交历史进行清理,之前做过类似的处理。这次碰到2个新的小问题,记录一下。

基本步骤

参考使用git filter-branch删除没有使用的大文件 (彻底删除git中没用的大文件git filter-branch 命令修改删除提示记录)

所碰到的2个小问题

问题1:执行以下命令报错。报错信息中含有:fatal: Cannot open existing pack file '.git/objects/pack/pack-*.idx'

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -3

报错信息如下两行:
Input file specified two times.

fatal: Cannot open existing pack file '.git/objects/pack/pack-*.idx'

开始以为是没有pack-*.idx文件不存在,但查看后的确是有的。摸索了一下,解决办法是:

在cmd 或者windows-terminal窗口运行以下命令后,再执行上述命令即可。

C:\Program Files\Git\bin\bash.exe

注意:

如果有安装wsl2,直接执行bash.exe,启动的bash是wsl2,而在wsl2下的bash中执行这个命令也有问题,但是在git下的bash.exe中执行(实际为mingw)则没有问题。

问题2:执行 filter-branch 时报错,报错信息:Cannot rewrite branches: You have unstaged changes.

git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch <file>/' --tag-name-filter cat -- --all

报错信息如下:
Cannot rewrite branches: You have unstaged changes.

以为是路径中有空格,实际不是。解决办法如下,或者采用tortoisegit提交即可。

git checkout -- <file>
或
git add <file>

参考:Github删除某个文件的所有提交记录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值