git使用实录 添加过大文件导致提交问题解决
2017-03-21 本文已影响858人
sands_yu
前言
开发中遇到一个比较蛋疼的问题,因为新公司的项目是直播类型,集成网易的播放器SDK,静态库文件大小103MB超过了git提交文件的限制,且已经被我添加到commit记录中,等反应过来已经为时已晚.
不管是回滚还是删除对应文件亦或者添加忽略,提交时都会报文件过大的错误,记录一下自己解决的方法.
最后解决办法是先获取所有提交记录中大文件的列表,然后进行删除,因为涉及到对以往提交记录的修改,其实还是有一定风险的.
过程
1.获取大文件列表
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
输出:
66b9f17406fb109070c29a611f2b9e37cce5eecb NELivePlayer/libs/libNELivePlayer.a
d62d664624dc4668bf02fa307a4b7877714cdad5 Pods/PLPlayerKit/Pod/Library/lib/libPLPlayerKit.a
a03e179bd2a474326afd6f594de933aa9bd9b9f0 Pods/PLPlayerKit/Pod/Library/lib/libavcodec.a
a44851e9099ceaf519e595cbb416d267ee4bbb18 Pods/PLPlayerKit/Pod/Library/lib/libcrypto.a
libNELivePlayer.a就是报错的罪魁祸首
删除所有带有libNELivePlayer.a文件的记录
git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch NELivePlayer/libs/libNELivePlayer.a' --tag-name-filter cat -- --all
执行完 再回到sourcetree,可以看到含有libNELivePlayer.a的提交记录都已经不见了,重新点提交,问题解决.