<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      處理.git文件夾過大出現臃腫問題-filter-branch和BFG工具

      Git開發手冊

      git一些不常用的命令記不住,可以查看git開發手冊(https://m.php.cn/manual/view/34957.html)

      1、.git/objects/pack 文件過大

      今天從git拉取項目進行開發的時候克隆的很慢,還以為是網速的問題。查看了一些git命令框的拉取網絡速度發現網速也很快,克隆下來后才發現是.git文件夾太大,項目代碼占用很小。發現了是git的問題后,就第一時間查找下是那個地方出的問題導致文件過大。

      進入.git目錄后發現是/objects/pack目錄下面的xxx.pack文件占用過大。

      2、pack文件過大出現的原因

      在開發過程中有時候不小心上傳了大文件,雖然后面在目錄里面刪除了,但會被git記錄下來。這樣慢慢的記錄的越來越多,就變為了目前這樣文件太大。出現臃腫。我們可以使用git自帶的filter-branch工具或者BFG進行倉庫清理。

      3、使用git filter-branch清理

      進入git命令框,輸入命令。首先查詢出3個大文件信息

      git verify-pack -v .git/objects/pack/pack-xxx.idx | sort -k 3 -n | tail -3 (xxx你的.git的pack目錄文件)

      查詢結果

      73671b13992abba02a7fa56d37735d4ac01803b1 blob   62992368 62936889 132214388

      在根據上面的文件名的編碼ID:73671b13992abba02a7fa56d37735d4ac01803b1 查詢出大文件的名稱:

      git rev-list --objects --all | grep 73671b13992abba02a7fa56d37735d4ac01803b1

      上面的為單個查詢,我們也可以直接查詢多個,把上面的兩個命令合并一起執行。

      git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')" #查詢前10個大文件

      通過命令查詢出文件信息,然后將該文件從歷史記錄的所有 tree 中移除,執行命令從歷史中刪除指定的大文:

      git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch 文件/文件夾" --prune-empty --tag-name-filter cat -- --all #文件/文件夾 是通過上面查詢出來的大文件路徑和名稱

      執行成功后需要刪除和重建索引

      git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin 

      然后設置歷史記錄的過期時間為現在,默認為90天。

      git reflog expire --expire=now --all #所有未關聯對象過期時間為現在

      通過gc清理文件并優化本地存儲庫

      git gc --aggressive --prune=now

      強制提交

      git push --all --force origin

      執行完畢上面命令,一個大文件我們就清理完畢了,如果有多個大文件需要一個文件一個文件的執行。當大文件都清理完畢我們可以查看當前目錄下個文件及目錄占用空間大小

      du -sh .git

      如果輸出文件過大,可以繼續查找相關大文件進行刪除。

      git count-objects -v #計算解包的對象數量及其磁盤消耗量

      4、高效大文件清理工具 BFG

      官網地址:BFG (https://rtyley.github.io/bfg-repo-cleaner/ )BFG是git-filter-branch的替代品,官方介紹說要比 git-filter-branch 快上10~720x,本人使用了下,確實很快。值得我們去使用。需要去官網下載bfg.jar。也可以去鏡像倉庫下載(https://repo1.maven.org/maven2/com/madgag/bfg/)這里使用1.14.0版本。由于是jar包運行bfg需要具備java環境。簡單介紹下命令,也可以自己去官網查找相關命令。

      通過 --mirror  拉取自己項目的.git 文件, --mirror參數只拉取.git文件不克隆代碼,防止操作失誤修改項目代碼。

      git clone --mirrot xxx.git

      查詢前10個大文件

      git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"

      通過刪除目錄文件刪除

      java -jar bfg.jar --delete-folders {dev} --no-blob-protection project.git #{dev} 刪除dev目錄下面的所有文件

      通過文件大小刪除

      java -jar bfg.jar --strip-blobs-bigger-than 10M project.git #刪除文件大于10M

      通過文件名字刪除,先通過查詢大文件查詢出數據,然后通過文件名稱執行該命令刪除:

      java -jar bfg.jar --delete-files "xxxx"  project.git

      java -jar bfg.jar --delete-files "xxxx" --no-blob-protection project.git

      刪除敏感信息

      java -jar bfg.jar --replace-text pwd.txt project.git

      pwd.txt自己定義需要移除數據的文本,具體語法自己可以查找相關文檔。

      設置過期時間為現在 & 清理文件

      git reflog expire --expire=now --all && git gc --prune=now --aggressive

      推送到遠程

      git push --mirror

      最后我們在執行下 du -sh .git 命令查詢一些.git文件夾大小,發現一些沒有的文件我們已經清理干凈了。后面需要重新從git克隆代碼,不要使用之前的.git文件進行提交。否則文件會變得更大。

       

      posted @ 2023-07-13 15:11  sowler  閱讀(3230)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区精品久久呦| a片在线免费观看| 国产一区| 西西大胆午夜人体视频| 国产精品亚洲一区二区z| 人妻av一区二区三区av免费| 2021亚洲va在线va天堂va国产| 国产精品久久久福利| 亚洲老熟女一区二区三区| 国产一区二区在线有码| 精品黄色av一区二区三区| 国产精品国产三级国快看| 午夜福利在线观看6080| 南投县| 亚洲av与日韩av在线| 亚洲男女羞羞无遮挡久久丫| 内射囯产旡码丰满少妇| 国产精品综合在线免费看| 亚洲色在线V中文字幕| 亚洲av无码成人精品区一区| 国产精品久久久久鬼色| 国产无遮挡又黄又爽不要vip软件| 亚洲综合成人一区二区三区| 国产欧美在线观看一区| 一级做a爰片在线播放| 国产在线自拍一区二区三区| 亚洲欧美人成人让影院| 国自产拍偷拍精品啪啪模特| 激情综合网激情五月激情| 国产高清视频在线播放www色| 久久99热只有频精品8| 精品国产av一区二区三区| 国产午夜成人久久无码一区二区| 在线播放国产精品三级网| 色悠悠国产精品免费观看| 思思久99久女女精品| 人妻夜夜爽天天爽三区麻豆av| 国产线播放免费人成视频播放| 久久国产精品成人影院| 天堂一区二区三区av| 国产精品大全中文字幕|