2016-10-18 166 views
2

由於歷史記錄中有大型文件,我的存儲庫非常龐大。爲了找到大文件和刪除它們,我執行:在git存儲庫歷史記錄中查找大文件失敗

$ git verify-pack -v .git/objects/pack/pack-..e8a.idx | sort -k 3 -n | tail -3 

,結果是一樣的東西:

12eb660ea206e1b7bd42cb8b525aabe9e86a5064 blob 56413247 15833578 5889838 
89b377ace5639c0914bb49d28d0c8e97b0f19a16 blob 56414112 15833631 81736530 
4ea83fb57b49f7afdbe99e4f043509d184338f5b blob 56426618 15837504 48628334 

要找到最大的文件的路徑,我跑:

$ git rev-list --objects --all | grep 4ea83fb57b49f 

,其結果是:

4ea83fb57b49f7afdbe99e4f043509d184338f5b path/to/my/large_file 

但是,當我在這個文件中像運行git log

$ git log --oneline --branches -- path/to/my/large_file 

不顯示任何日誌。 此外,每當我試圖從歷史中刪除二進制文件:

$ git filter-branch --index-filter \ 
'git rm --ignore-unmatch --cached path/to/my/large_file' 

我收到:

WARNING: Ref 'refs/heads/master' is unchanged 

任何想法?

回答

1

也許大對象的路徑位於不同的分支。使用--all中的filter-branch命令從所有分支中刪除大文件。

+0

謝謝,長話短說一個簡單的答案。 :)我的錯誤沒有使用 - 所有在'git filter-branch'結尾。糾正你的答案,所以我可以接受它。 – hsalimi

+0

很高興它有幫助。實際上我發佈的'filter-branch'命令已經包含了--all參數。 – mcns7

相關問題