因累積太多無法提交 github,如何清除歷史變更記錄?
某草草
某草草 2017-05-02 09:31:58
0
2
630

如題,累積有半年沒 push 到 github 了,由於裡面有幾個 jar 沒忽略,越來越多,push 後會報:

Counting objects: 4779, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3903/3903), done.
error: RPC failed; result=56, HTTP code = 200 | 14.92 MiB/s
fatal: The remote end hung up unexpectedlyMiB | 158.00 KiB/s
Writing objects: 100% (4779/4779), 628.84 MiB | 152.00 KiB/s, done.
Total 4779 (delta 2353), reused 3 (delta 0)
fatal: The remote end hung up unexpectedly
Everything up-to-date

搜了一些方法,像什麼換 ssh 之類,都無效,請問有什麼簡單辦法拋棄掉歷史記錄,只把當前的版本 push 上去?

實在沒辦法只好重新 clone 再覆蓋,但線上也有幾百兆,能有什麼命令參數簡單拋棄掉就最好了。


找到一個方法 https://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html 可以清理歷史,目前正嘗試,OK 後再來續寫。

某草草
某草草

全部回覆(2)
伊谢尔伦

終於找到簡單的辦法了,用 git 自帶的命令 filter-branch 是可以過濾刪除的,但太慢了,我運行了一整晚還沒結束,卡在 98% 的進度。後來我找到了BFG Repo-Cleaner 這個工具,幾分鐘內就刪除乾淨了,.git 目錄大小由原來的2.9G 左右縮減到70M,刪除過去提交的所有tar.gz,zip,jar,war 等,只留下原始碼,總算能push 到github 了。

具體執行流程為:

bfg --delete-files *.tar.gz # 后面的文件名匹配可换成自己要删除的文件名
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --all --force
git push --all --tags --force
大家讲道理

rebase,push的時候-f

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板