有時候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 文件大小,提升拉取代碼的速度。

git倉庫清理瘦身解決 .git文件夾過大的問題_git 清理_git

需要加個remote,

URL:https://xxx.com/xta/xt-open-admin  (你的git地址)

git倉庫清理瘦身解決 .git文件夾過大的問題_git 清理_#大數據_02

如果不能force push 則可臨時打開配置:

git倉庫清理瘦身解決 .git文件夾過大的問題_git 清理_git_03