欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

方法如下:

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

找出排名前 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。
找出該記錄對應的文件:

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

可以看到:

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

這個文件就是罪魁禍首,它占了有 100 多 M 的空間。

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

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

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

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

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

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

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

git push --force

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • vs2019報錯:配置“Debug|Win32”的 Designtime 生成失敗IntelliSense 可能不可用的問題

    vs2019報錯:配置“Debug|Win32”的 Designtime 生成失敗IntelliSense 可能不可用的

    這篇文章主要介紹了vs2019報錯:配置“Debug|Win32”的 Designtime 生成失敗IntelliSense 可能不可用 出錯內容,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • http協(xié)議詳解(超詳細)

    http協(xié)議詳解(超詳細)

    HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是用于從WWW服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。
    2011-08-08
  • Windows系統(tǒng)下安裝GIt及GIT基本認識和配置

    Windows系統(tǒng)下安裝GIt及GIT基本認識和配置

    這篇文章主要介紹了Windows系統(tǒng)下安裝GIt及GIT基本認識和配置,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 三招兩式 解決圖片盜鏈無法查看問題

    三招兩式 解決圖片盜鏈無法查看問題

    有些粗心大意的人轉貼時,簡單地把圖片復制了過來。可如果該網(wǎng)站的圖片設置為防止外部鏈接,我們遇到轉載的好帖,又找不到原出處,難道只有哀嘆的份么?
    2011-06-06
  • Git commit --amend 修改提交信息操作

    Git commit --amend 修改提交信息操作

    這篇文章主要介紹了Git commit --amend 修改提交信息操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 深入剖析從輸入URL到頁面顯示過程原理

    深入剖析從輸入URL到頁面顯示過程原理

    這篇文章主要為大家深入剖析了從輸入URL到頁面顯示這中間發(fā)生的過程原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 詳解Git?的?rebase?命令使用方法

    詳解Git?的?rebase?命令使用方法

    這篇文章主要介紹了Git?的?rebase?命令使用方法,接下來,我們使用rebase命令,其命令一般形式為git?rebase?feature,即表示在?master?分支上執(zhí)行rebase命令,將?feature?分支的代碼合并到?master?分支,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 如何查看git分支從哪個源分支拉的

    如何查看git分支從哪個源分支拉的

    這篇文章主要介紹了如何查看git分支從哪個源分支拉的,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Unity中webgl使用避雷要素指南

    Unity中webgl使用避雷要素指南

    這篇文章主要介紹了Unity中webgl使用過程中會踩過的坑,以及如何解決這些問題,有需要的朋友可以借鑒參考下,希望可以對廣大讀者朋友能夠有所幫助
    2021-09-09
  • 詳解git reset 加不加 --hard的區(qū)別

    詳解git reset 加不加 --hard的區(qū)別

    這篇文章主要介紹了詳解git reset 加不加 --hard的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論