前言
開(kāi)發(fā)中遇到一個(gè)比較蛋疼的問(wèn)題,因?yàn)樾鹿镜捻?xiàng)目是直播類型,集成網(wǎng)易的播放器SDK,靜態(tài)庫(kù)文件大小103MB超過(guò)了git提交文件的限制,且已經(jīng)被我添加到commit記錄中,等反應(yīng)過(guò)來(lái)已經(jīng)為時(shí)已晚.
不管是回滾還是刪除對(duì)應(yīng)文件亦或者添加忽略,提交時(shí)都會(huì)報(bào)文件過(guò)大的錯(cuò)誤,記錄一下自己解決的方法.
最后解決辦法是先獲取所有提交記錄中大文件的列表,然后進(jìn)行刪除,因?yàn)樯婕暗綄?duì)以往提交記錄的修改,其實(shí)還是有一定風(fēng)險(xiǎn)的.
過(guò)程
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就是報(bào)錯(cuò)的罪魁禍?zhǔn)?/p>
刪除所有帶有l(wèi)ibNELivePlayer.a文件的記錄
git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch NELivePlayer/libs/libNELivePlayer.a' --tag-name-filter cat -- --all
執(zhí)行完 再回到sourcetree,可以看到含有l(wèi)ibNELivePlayer.a的提交記錄都已經(jīng)不見(jiàn)了,重新點(diǎn)提交,問(wèn)題解決.