git 倉庫中刪除歷史大文件
git 倉庫中刪除歷史大文件
在git中增加了一個很大的文件,而且被保存在歷史提交記錄中,每次拉取代碼都很大,速度很慢。而且用刪除
提交歷史記錄的方式不是很實際。
以下分幾個步驟介紹如何減小.git文件夾
1.顯示10個最大的文件id列表
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -10
$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -10
f830d5449f307e45915c2544dfef902cfbfab5d9 blob 3714990 2811488 60010494
986d0c3904de8a3b08c17b5feb9f29da442ebfd4 blob 5912773 5542283 31754
c1fd4cf06c9836d1bbd0344729af99a9e5e5f32c blob 7959920 7872976 234245152
90d45f4b62ce20fb4ff733e83267152951edad97 blob 28553670 28557775 205684107
a2f423946a59e4a2c83955f4af4d19dc1f048e5f blob 45041599 43163608 74595714
4949ea380952b32c412943ed77fb36fd5be35e84 blob 45337600 7431701 62822673
4564140f9e8ee9fefb65db2ae33a8b8a90dc29d3 blob 54272873 54107977 242200239
09401d185a5cdafadc33105b1d62b868328c0dba blob 54639114 54423305 5574037
6562f64e52e205bce49f9611e04e82a0e0f956db blob 129540654 82626130 122357710
3b08a747589895bdc995cd18ae1fe9e70abcd417 blob 697131332 691555610 296308295
2. 根據文件id查詢文件路徑
git rev-list --objects --all | grep 3b08a747589895bdc995cd18ae1fe9e70abcd417
$ git rev-list --objects --all | grep 3b08a747589895bdc995cd18ae1fe9e70abcd4173b08a747589895bdc995cd18ae1fe9e70abcd417 yunos_compile/aarch64-linux-gnueabi-4.9-glibc-2.20.tgz
3. 移除文件
git log --pretty=oneline --branches -- your_file
$ git log --pretty=oneline --branches -- yunos_compile/aarch64-linux-gnueabi-4.9-glibc-2.20.tgz8cc32c6b75122f204f4d3efdba30130759076731 add Sparrow monkey test user a32477a611de0e8c60f6e58f7690a759b6577bd4 add yunos_compile
4. 刪除文件的歷史記錄
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch --ignore-unmatch your_file' --prune-empty --tag-name-filter cat -- --all
5. 提交
git push --force --all
如果出現提示remote: GitLab: You are not allowed to force push code to a protected branch on this project.
需要在gitlab里面取消分支protected
6. 清除本地緩存
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune
分類:
4.Liunx/嵌入式