操作
專案中經常有不小心提交的大檔案,這個就是清理方法
後面發現了更好的方法 :
使用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了,下面...