婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Git如何刪除歷史記錄中的大文件詳解

Git如何刪除歷史記錄中的大文件詳解

熱門(mén)標(biāo)簽:承德地圖標(biāo)注公司收費(fèi) 華創(chuàng)e路航彩票銷(xiāo)售點(diǎn)地圖標(biāo)注 suitecrm 地圖標(biāo)注 高德地圖標(biāo)注常顯 外呼系統(tǒng)號(hào)顯示星號(hào)怎么看 揭陽(yáng)電腦外呼系統(tǒng)公司 銀川語(yǔ)音外呼系統(tǒng)中心 臨沂ai電銷(xiāo)機(jī)器人招商 鶴壁外呼系統(tǒng)公司

前言

Git 作為一個(gè)分布式的版本管理工具,代碼倉(cāng)庫(kù)中是會(huì)保存所有歷史記錄的。雖然,Git 的 .gitignore 文件里可以定義一些忽略文件的規(guī)則,但是,在我們提交代碼的過(guò)程中,總會(huì)不小心誤提一些沒(méi)用的文件,如果文件中存在大文件,就會(huì)導(dǎo)致:就算我們把它刪了重新提交,.git 文件夾依然會(huì)占用較大的空間。

如何解決這個(gè)問(wèn)題呢?其實(shí),Git 已經(jīng)為我們提供了解決方案,就是被稱(chēng)為核彈級(jí)的命令 filter-branch。這個(gè)命令可以用來(lái)修改歷史提交記錄,把不需要的文件永久地從歷史記錄中刪除。

方法如下:

首先,我們需要找出大文件。

找出排名前 5 的 pack 記錄:

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

可以看到這樣的信息:

1753e0b6aa1cd3ed27d1d14e8e569664c685e896 blob 44600 43841 37970
ca12c545eae19d688ac840c7f0e2e623a1a4192b blob 45262 8534 140448
7a3265ee94c0ab25cf079ac8ccdf87f41d455d42 blob 54708 49093 171307
72590cee1315e32dada25535184dcee97c6f5af9 blob 1114323 1104823 113887612
4cc1f9dcef1004355d2a595d45808e99f100dc4d blob 114592569 113703558 184054

最后一條就是最大的一條記錄,4cc1f9dcef1004355d2a595d45808e99f100dc4d 是它的 id。
找出該記錄對(duì)應(yīng)的文件:

git rev-list --objects --all | grep 4cc1f9dcef1004355d2a595d45808e99f100dc4d

可以看到:

4cc1f9dcef1004355d2a595d45808e99f100dc4d app/src/main/assets/Android群英傳.pdf

這個(gè)文件就是罪魁禍?zhǔn)祝剂擞?100 多 M 的空間。

將該文件從歷史記錄中移除:

git log --pretty=oneline --branches -- app/src/main/assets/Android群英傳.pdf

重寫(xiě)所有 commit,將該文件從 Git 歷史中完全移除:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch app/src/main/assets/Android群英傳.pdf' -- --all

到這里,歷史記錄中已經(jīng)沒(méi)有該文件了。不過(guò)運(yùn)行 filter-branch 產(chǎn)生的日志還是會(huì)對(duì)該文件有引用,所以還需要運(yùn)行以下幾條命令,把該文件的引用完全刪除:

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune

這個(gè)時(shí)候,再看文件夾,已經(jīng)小了很多了。然后就可以 push 代碼了,不過(guò)就是需要強(qiáng)制 push:

git push --force

以上就是刪除 Git 歷史記錄中大文件的過(guò)程。

當(dāng)然 filter-branch 的作用還不止這些,比如它還可以用來(lái)修改歷史提交記錄中的用戶(hù)名(username)和郵箱(email)等。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • Git和Maven的子模塊簡(jiǎn)單實(shí)踐
  • 利用github搭建個(gè)人maven倉(cāng)庫(kù)的方法步驟
  • Docker-compose部署gitlab的方法步驟
  • VSCode配置Git的方法步驟隨記
  • Git忽略提交的3種方法及Git忽略規(guī)則
  • Git原理和常用操作
  • 微信小程序使用gitee進(jìn)行版本管理
  • 詳解使用mpvue開(kāi)發(fā)github小程序總結(jié)
  • 詳解git倉(cāng)庫(kù)遷移的兩種解決方案
  • Git設(shè)置和取消代理的方法

標(biāo)簽:七臺(tái)河 忻州 汕尾 三沙 許昌 棗莊 咸寧 萊蕪

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Git如何刪除歷史記錄中的大文件詳解》,本文關(guān)鍵詞  Git,如何,刪除,歷史,記錄,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Git如何刪除歷史記錄中的大文件詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Git如何刪除歷史記錄中的大文件詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 保山市| 太湖县| 营口市| 信宜市| 大荔县| 洛宁县| 罗甸县| 天峨县| 合肥市| 互助| 兴安盟| 上饶市| 姚安县| 登封市| 南涧| 台山市| 闽侯县| 大悟县| 澄迈县| 迭部县| 古浪县| 肥东县| 句容市| 江门市| 南溪县| 旺苍县| 五华县| 安福县| 石棉县| 高安市| 山阳县| 祁东县| 三门峡市| 格尔木市| 太仓市| 阿克| 江都市| 桐城市| 平远县| 剑河县| 姚安县|