# Git 大文件清理

查找大文件

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

結(jié)果

zsh: no matches found: .git/objects/pack/*.idx
4fa9c4356393c0a3047a64e2662d5b624a471b3e
47e9174f93476eb8fb744c66b2060bd5bdb7d6a7
ec51f3c438af85e9835c53fc251cfd714e7a0bfc
5cee5c2988f361e20d7c1e3bc9a91c3eb42864e5
3257e94bc49f743d49efb53db26e619df26be0c5
f66e46b3c12602662f33ddf8b0c99d91e8a279ef
a0b12cc5d48ae90065210b441f3d6c1a33378b37 
c74105573fb0312738746de0718449565b36ac58 jczr.rar
bece93b911880583437964207f2c4a2252881d0e read.md
5fa55fe49a260ed6e9665d31685b2ef61b1bf376 readme2.md
e60b15a71c46199a36955fc0da55d45d69e89388 
204f7e33b29397657ddcd35e8971db46e0753486 dawenjian.zip
20f192ea673667322a769f7765159bed736ceeab 
9eef28535c062025b7354695c2a6cfffebb210a0 read.md
8b062a810b9473aeb6f697f67898a21120f3d4aa readme2.md
359618d9f4efdeefb94453cb172b96b36e2743ae 
0b61c06e8627abb75f01da05f583592dd486f9ba 
ef0ef318e3c167d67016b0b9bc5149d6b2f19dce read.md
0eb689f0b4e75f72ecf14a9b54d34cd1e2ab79fa 
8494906e9a9b585fc75640034d8b5f59f67297d2 read.md
  • 第一行是文件id
  • 第二行是文件路徑

刪除大文件

Git倉庫徹底刪除一個文件只有一種辦法:重寫(Rewrite)涉及該文件的所有提交苇本。 幸運(yùn)的是借助git filter-branch便可以重寫歷史提交蕊程,當(dāng)然這也是Git中最危險的操作。 可以說比rm -rf *危險一萬倍介返。

git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch dawenjian.zip' --tag-name-filter cat -- --all

--index-filter參數(shù)用來指定一條Bash命令,然后Git會檢出(checkout)所有的提交享钞, 執(zhí)行該命令号胚,然后重新提交。我們在提交前移除了recent-badge.psd文件酸役, 這個文件便從Git的所有記錄中完全消失了
--all參數(shù)告訴Git我們需要重寫所有分支(或引用)住诸。
unmatch 后面跟文件的路徑

此時我們使用查找大文件的命令查找文件,發(fā)現(xiàn)那些文件還是在簇捍。怎么回事呢只壳?因?yàn)闆]清理緩存。下面我們看下怎么清理緩存暑塑。

清理git 緩存

Git倉庫歷史有個緩存期吼句,如果不主動回收、清理倉庫歷史事格,一般的這些記錄還會保存一段時間惕艳,以備你突然后悔了搞隐,沒辦法找回刪掉的文件。那么怎么樣才能主動回收資源能远搪?就是通過以下命令:

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

比較清理前后的提交信息變化

清理前的提交日志

這里我再添加一個大文件和一個說明文件劣纲,添加后提交。
執(zhí)行git log -p命令查看提交內(nèi)容谁鳍,如下所示

image

清理后的提交日志

很顯然日志未發(fā)生任何變化


image

主動刷新后的提交日志變化

很顯然癞季,在提交日志里,根本看不到我們提交過什么大文件倘潜,只有和大文件同時提交的記錄文件還在绷柒。那說明我們把大文件的提交記錄清除了。


image

溫馨提示

大文件已經(jīng)提交到遠(yuǎn)程倉庫

如果這些文件已經(jīng)提交到遠(yuǎn)程倉庫了涮因,那么現(xiàn)在就有一個問題废睦,遠(yuǎn)程倉庫的提交記錄和本地的提交記錄不一致。只能強(qiáng)制提交或者強(qiáng)制update

  • 強(qiáng)制提交git push origin master -force,本地代碼強(qiáng)制覆蓋遠(yuǎn)程代碼倉庫的代碼
  • 強(qiáng)制覆蓋遠(yuǎn)程版本到本地养泡,最后的代碼就是遠(yuǎn)程倉庫的版本
git fetch --all
git reset --hard origin/master
大文件不曾提交到遠(yuǎn)程倉庫

如果大文件不曾提交到遠(yuǎn)程倉庫嗜湃,則可以處理了大文件后,直接提交到倉庫澜掩。

參考文檔

Git+Gerrit如何永久刪除歷史文件(大文件/私密文件)
尋找并刪除Git記錄中的大文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末购披,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子输硝,更是在濱河造成了極大的恐慌今瀑,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件点把,死亡現(xiàn)場離奇詭異橘荠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)郎逃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門哥童,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人褒翰,你說我怎么就攤上這事贮懈。” “怎么了优训?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵朵你,是天一觀的道長。 經(jīng)常有香客問我揣非,道長抡医,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任早敬,我火速辦了婚禮忌傻,結(jié)果婚禮上大脉,老公的妹妹穿的比我還像新娘。我一直安慰自己水孩,他們只是感情好镰矿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俘种,像睡著了一般秤标。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宙刘,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天抛杨,我揣著相機(jī)與錄音,去河邊找鬼荐类。 笑死,一個胖子當(dāng)著我的面吹牛茁帽,可吹牛的內(nèi)容都是我干的玉罐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼潘拨,長吁一口氣:“原來是場噩夢啊……” “哼吊输!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铁追,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤季蚂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琅束,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扭屁,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年涩禀,在試婚紗的時候發(fā)現(xiàn)自己被綠了料滥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡艾船,死狀恐怖葵腹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屿岂,我是刑警寧澤践宴,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站爷怀,受9級特大地震影響阻肩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霉撵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一磺浙、第九天 我趴在偏房一處隱蔽的房頂上張望洪囤。 院中可真熱鬧,春花似錦撕氧、人聲如沸瘤缩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剥啤。三九已至,卻和暖如春不脯,著一層夾襖步出監(jiān)牢的瞬間府怯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工防楷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牺丙,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓复局,卻偏偏與公主長得像冲簿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亿昏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350