搜尋

首頁  >  問答  >  主體

.git 檔案太大時怎樣處理

一個 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.

PHPzPHPz2810 天前1055

全部回覆(7)我來回復

  • 大家讲道理

    大家讲道理2017-04-21 11:20:47

    clone的時候,可以指定深度,如下,為1即表示只克隆最近一次commit.

    git clone git://xxoo --depth 1

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-21 11:20:47

    使用 git rebase 可以修改提交歷史。

    例如合併前兩個提交:http://stackoverflow.com/questions/59...

    善用rebase,除了刪除某些提交之外,還可以修改提交日誌;拆分一次包含多個功能的提交;合併幾個相同功能的提交,保持程式碼庫歷史整潔。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-21 11:20:47

    如果是java建立的web項目,加上 ssh 什麼的加上,也不算太大啦。
    或者你可以考慮把公共的 jar 都剝離出去,不要直接放在專案中。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-21 11:20:47

    .jar檔案顯然不屬於你自己的前端程式碼,而屬於第三方依賴,不應該放在程式碼庫之中。建議在專案前期用腳本管理第三方依賴的版本,把這個.jar檔從程式庫之中去掉。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-21 11:20:47

    git是可以改歷史的
    你試試看先在本地把沒用的歷史合併 再強行push上去

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-21 11:20:47

    .git 下是你的本地倉庫,記錄的是全部的 git commit 歷史信息,
    clone 的時候指定 depth 可以不下載過多的歷史 commit 資訊。

    不過你的疑問似乎是發布的時候如何處理,
    簡單,發佈的時候刪掉 .git 目錄即可。

    回覆
    0
  • 黄舟

    黄舟2017-04-21 11:20:47

    使用git lfs
    https://git-lfs.github.com/

    回覆
    0
  • 取消回覆