最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年07月01日 14:46:00   作者:laocaixw  
這篇文章主要給大家介紹了關(guān)于Git如何刪除歷史記錄中大文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

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)為我們提供了解決方案,就是被稱為核彈級(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)修改歷史提交記錄中的用戶名(username)和郵箱(email)等。

總結(jié)

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

相關(guān)文章

  • 使用git checkout到歷史某個(gè)版本

    使用git checkout到歷史某個(gè)版本

    這篇文章主要介紹了使用git checkout到歷史某個(gè)版本,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vscode使用remote-ssh免密連接服務(wù)器

    vscode使用remote-ssh免密連接服務(wù)器

    本文主要介紹了vscode使用remote-ssh免密連接服務(wù)器
    2024-03-03
  • Git 教程之分支管理詳解

    Git 教程之分支管理詳解

    本文主要介紹Git 分支管理的知識(shí),這里整理了相關(guān)資料及命令詳解,有需要的小伙伴可以參考下
    2016-09-09
  • 解決git配置錯(cuò)誤ssh:connect to host github.com port 22:Connection refused

    解決git配置錯(cuò)誤ssh:connect to host github.com 

    學(xué)習(xí)git時(shí),可能會(huì)碰到遠(yuǎn)程倉(cāng)庫(kù)連接問(wèn)題,解決方法是確保.ssh目錄正確配置,首先,確認(rèn).ssh是隱藏文件夾,可通過(guò)ctrl+h顯示,然后,創(chuàng)建無(wú)后綴的config文件,并填寫(xiě)正確的git郵箱賬號(hào),最后,通過(guò)終端驗(yàn)證配置是否成功,這些步驟有助于解決git遠(yuǎn)程連接的常見(jiàn)問(wèn)題
    2024-10-10
  • vscode如何設(shè)置默認(rèn)打開(kāi)的瀏覽器為Chrome

    vscode如何設(shè)置默認(rèn)打開(kāi)的瀏覽器為Chrome

    這篇文章主要介紹了vscode如何設(shè)置默認(rèn)打開(kāi)的瀏覽器為Chrome,需要的朋友可以參考下
    2020-08-08
  • web高性能開(kāi)發(fā)系列隨筆 BearRui(AK-47)版

    web高性能開(kāi)發(fā)系列隨筆 BearRui(AK-47)版

    在BlogJava里寫(xiě)了一些關(guān)于高性能WEB開(kāi)發(fā)的隨筆,因?yàn)槎际歉岸思夹g(shù)相關(guān)(html,http,js,css等),大家可以參考下。非常值得參考。
    2010-05-05
  • Git命令常用操作之代碼拉取和提交方式

    Git命令常用操作之代碼拉取和提交方式

    這篇文章主要介紹了Git命令常用操作之代碼拉取和提交方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 解決使用commit提交大文件無(wú)法推送到遠(yuǎn)程庫(kù)問(wèn)題及git rebase使用詳解

    解決使用commit提交大文件無(wú)法推送到遠(yuǎn)程庫(kù)問(wèn)題及git rebase使用詳解

    這篇文章主要介紹了解決使用commit提交大文件無(wú)法推送到遠(yuǎn)程庫(kù)問(wèn)題及git rebase使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Visual Studio 2022 集成 GIT 使用圖文教程

    Visual Studio 2022 集成 GIT 使用圖文教程

    本文詳細(xì)介紹了VisualStudio2022與GIT集成的操作步驟,包括下載GIT、安裝和配置GIT、以及如何在VisualStudio2022中下載GIT項(xiàng)目和上傳項(xiàng)目到GIT服務(wù)器,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • CentOS下安裝Jenkins的完整步驟

    CentOS下安裝Jenkins的完整步驟

    Jenkins是一款由Java編寫(xiě)的開(kāi)源的持續(xù)集成工具,下面這篇文章主要介紹了CentOS下安裝Jenkins的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評(píng)論

饶河县| 新巴尔虎右旗| 乌鲁木齐市| 井冈山市| 平原县| 平罗县| 偏关县| 津市市| 惠水县| 衢州市| 资阳市| 左云县| 睢宁县| 开平市| 开平市| 三亚市| 南岸区| 加查县| 辽宁省| 阿拉善盟| 泸州市| 汕尾市| 张家界市| 宁强县| 莫力| 芦山县| 平山县| 大名县| 焉耆| 衡阳市| 八宿县| 延安市| 富宁县| 米易县| 娱乐| 房产| 凤凰县| 明水县| 新安县| 淳安县| 苍山县|