一个 repo 里有 .jar
之类文件, 从 Github 下载 tag 里的 .zip
文件大小有 8M,
然后我用 filter-branch --tree-filter
删除了相关目录, 但大小没减多少..
查看了一下, 整个 repo 特别是 .git/objects/
文件太大, 总共 48M,
于是网上搜 git gc
命令的参数尝试性地弄了几个, 到了 37M, 主要是 .git/objects/pack/
36M.
作为一个 JS 前端模块还是太大了. 其实太早的 commit 可以丢弃的.
我想删除重建 .git
用来打包是可以的,
但遇到这样的问题时大家会怎么处理来舍弃无用的历史和文件?
---------
更新:
关于去掉部分 commit, 换个说法,,
我去掉一部分文件和一部分文件相关的 commit, 但要求方便从官方版本 merge 更新
目的是保证我的 repo (不用于开发, 仅仅发布压缩代码) 小, 而更新能进行 merge.
Apabila pengklonan, anda boleh menentukan kedalaman, seperti berikut, jika ia adalah 1, ia bermakna hanya mengklonkan komit terkini.
Gunakan
git rebase
untuk mengubah suai sejarah komit.Sebagai contoh, menggabungkan dua komit pertama: http://stackoverflow.com/questions/59...
Gunakan
rebase
dengan baik, selain daripada memadamkan komitmen tertentu, anda juga boleh mengubah suai komit pemisahan yang mengandungi berbilang ciri pada satu masa; .Jika ia adalah projek web yang dibuat di Jawa, ia tidak terlalu besar jika anda menambah ssh atau sesuatu yang lain.
Atau anda boleh mempertimbangkan untuk menanggalkan semua balang awam dan tidak meletakkannya terus dalam projek.
Fail
.jar jelas bukan milik kod bahagian hadapan anda sendiri, tetapi kebergantungan pihak ketiga dan tidak boleh diletakkan dalam pangkalan kod. Adalah disyorkan untuk menggunakan skrip untuk mengurus versi kebergantungan pihak ketiga pada peringkat awal projek dan mengalih keluar fail .jar daripada pangkalan kod.
Git boleh mengubah sejarah
Anda boleh cuba menggabungkan sejarah yang tidak berguna secara tempatan dan kemudian menolaknya secara paksa
.git ialah gudang tempatan anda, yang merekodkan semua maklumat sejarah komit git,
Menentukan kedalaman apabila pengklonan boleh mengelakkan memuat turun terlalu banyak maklumat komitmen sejarah.
Tetapi soalan anda nampaknya bagaimana untuk mengendalikannya semasa menerbitkan,
Mudah sahaja, hanya padamkan direktori .git semasa menerbitkan.
使用git lfs
https://git-lfs.github.com/