gitLab清理大檔案 包括歷史記錄中的大檔案

2021-10-10 00:16:36 字數 3110 閱讀 2248

操作

專案中經常有不小心提交的大檔案,這個就是清理方法

後面發現了更好的方法 :使用bfg快速清理git歷史大檔案

注意:清理完之後,其他人一定要刪掉之前拉取的專案,重新從git上拉專案,不要使用之前的專案了,之前的專案中的.git檔案會將已將刪除的檔案重新加進來,甚至變的更大

查詢/清理檔案的時候若是想提速,可以關掉 360/電腦管家等這樣的軟體,這些軟體會監控檔案,拖慢速度…我之前提示8小時的處理,關掉360之後2小時就完成了.

git count-objects -vh  # 檢視當前倉庫大小

du -sh # 檢視這個資料夾的總大小

ls -lh # 檢視這個資料夾中檔案的大小

解除保護分支

預設情況下,git專案是有乙個保護分支的

1、拉取專案:將專案所有分支拉下來

git clone *** # 預設拉取master分支

cd xx #進入拉取的資料夾

git branch -r |

grep -v '\->'

|while

read remote;

dogit branch --track "$"

"$remote"

;done

git fetch --all

git pull --all

2、查詢大檔案(若是知道具體的檔案,不需要查)

# 將最大的10個檔案查詢下來

git rev-list --objects --all |

grep

"$(git verify-pack -v .git/objects/pack/*.idx |

sort -k 3 -n |

tail -10 |

awk'')"

# 比如我查詢了

486fa66baeb237a456266dccfab8bab14cde98ba pro_web_front_202009101858.gz

d644ed6c55ecc6e058a0a7d0c39c4e49984a37d1 src/assets/img/2.png

f45b37335083ad5c5598e3cf5a75a9fc07b9a803 static/pdf/build/pdf.worker.js.map

21e9d2cd0c73b246d86f603c7ff0e5cd8b8312bc static/pdf/web/operationmanual.pdf

7c65cab916684f43d66053e570dbdf453e8ca507 src/assets/img/login.png

f8aebc2a121c89c99190553ac9b3dcc853315182 src/assets/img/login_2.png

13868adfda3704f8a8b10f64da068a11a418ccf2 src/assets/img/login_3.png

# 其中需要刪的是 pro_web_front_202009101858.gz

3、處理記錄

#檔案可以是資料夾,也可以是檔案 ,

#例如:資料夾的話可以是 /dist.js/

#例如:檔案可以是 static/pdf/build/pdf.worker.js

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 檔案' --prune-empty --tag-name-filter cat -- --all

# 會在專案根目錄生成 .git_....資料夾,裡面就是改的記錄

# 一次只能處理乙個檔案/資料夾

# **空間

git for-each-ref --format=

'delete %(refname)' refs/original |

git update-ref --stdin

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

git gc --aggressive --prune=now

# 此時檢視本地,會發現專案明顯減小了,若是還有需要的檔案,就重複第3步即可

4、推送到伺服器

git push origin --force --all

git remote prune origin

# 此時 ,拉取專案就已經是減小後的大小

# 但是檢視伺服器,伺服器顯示的大小還是原來的大小

5、清理伺服器快取

# 進入git伺服器-->這個操作需要root許可權,不然連資料夾都進不去

cd /var/opt/gitlab/git-data/repositories

#根據專案,進入對應的git專案資料夾

# 進入 專案.git檔案,就可以看到和本地的.git目錄中一樣的目目錄了

#查詢git專案大小

git count-objects -vh # 此時還是舊的大小

git gc --prune=now # 清理無效檔案

git count-objects -vh # 此時就和本地一樣,從庫減小了

貌似gitlab伺服器有快取,此時伺服器的倉庫中檔案大小已經減小了,但是在瀏覽器上通過頁面檢視,還是原來的大小

再次申明:清理完之後,每個人一定要刪掉之前拉取的專案,重新從git上拉專案。不要使用之前的專案了!!!之前的專案中的.git檔案會將已將刪除的檔案重新加進來,甚至變的更大

gitlab重寫歷史,清理歷史大檔案

1.匯出gitlab上原倉庫作為備份。2.轉殖遠端倉庫 3.拉取倉庫的所有分支 git branch r grep v while read remote do git branch track remote donegit branch git tag git fetch all git pull...

linux 查詢清理大檔案方法

linux作業系統中,經常會遇到磁碟空間滿的問題。遇到這樣的問題,先查下是什麼檔案過大或過多引起的,至於引起這個更深一層的原因,先不 怎麼檢視大檔案所在的路徑,linux中有乙個命令,叫du,先貼命令 du m max depth 1或 du h max depth 1du 用於統計linux中檔案...

Git專案過大清理(針對大檔案)

如圖,由於之前上傳了一些比較大的檔案,導致專案太大。即使後來刪除,記錄中還是儲存了這個檔案。以後不管是拷貝,還是push pull都比較麻煩。這會導致所有人每次git fetch需要浪費很多時間。檢視專案倉庫大小可以使用命令git count objects vh。如圖,我的專案已經超過4g了,下面...