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

如題,累積有半年沒 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

      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!