有時候git項目源文件明明不大,可能就1M左右,然而拉取卻很慢,整體佔用空間達到幾十上百M,查看提交記錄,發現是有人誤提交了編譯後的target包中的jar包,後來發現誤傳又刪除了。
在 GitLab 中,即使刪除了大文件,它們的歷史記錄仍會保留在倉庫中,導致 .pack 文件過大,影響拉取代碼的速度。要徹底刪除這些大文件的歷史記錄,可以使用 git filter-repo 工具。以下是具體步驟:
1. 安裝 git filter-repo
確保已安裝 git filter-repo,若未安裝,可通過以下命令安裝:
pip install git-filter-repo
2. 克隆倉庫
克隆需要清理的倉庫:
git clone --mirror https://gitlab.com/your-username/your-repo.git
cd your-repo.git
3. 使用 git filter-repo 刪除大文件
使用 git filter-repo 刪除大文件的歷史記錄。例如,刪除 large-file.zip:
git filter-repo --path large-file.zip --invert-paths
若要刪除多個文件,可以多次使用 --path 參數:
git filter-repo --path large-file1.zip --path large-file2.zip --invert-paths
4. 推送更改
清理完成後,強制推送到遠程倉庫:
git push origin --force --all
git push origin --force --tags
5. 重新克隆倉庫
清理後,重新克隆倉庫以確保所有歷史記錄已更新:
cd ..
rm -rf your-repo.git
git clone https://gitlab.com/your-username/your-repo.git
6. 清理本地倉庫
如果本地倉庫也需要清理,可以刪除並重新克隆:
rm -rf your-repo
git clone https://gitlab.com/your-username/your-repo.git
注意事項
備份:操作前務必備份倉庫,以防數據丟失。
影響:這會重寫提交歷史,所有開發者需重新克隆倉庫。
權限:確保有權限強制推送。
通過這些步驟,你可以有效清理倉庫中的大文件記錄,減小 .pack 文件大小,提升拉取代碼的速度。
需要加個remote,
URL:https://xxx.com/xta/xt-open-admin (你的git地址)
如果不能force push 則可臨時打開配置: