2016-11-23 31 views
0

我當前使用的是Bitbucket,因爲它具有2GB的回購大小,並允許您免費提供私人回購。由於限制達到2GB,並嘗試使用BFG以及tutorial減小文件大小,以減少回購大小並刪除以前的歷史記錄。可悲的是,我已經過了一半,在我將其推入回購協議後從未發生過。從「name.git」文件夾中,我的大小從2GB減少到大約500到600MB的回購大小,而Unity中的項目文件夾大約爲1GB。在Git中管理repo文件大小的最佳操作/移動/建議,特別是在大型遊戲項目中?

我試圖創造一個新的回購,而不是我的沮喪,複製粘貼項目,並使用安裝LFS直接把所有大文件已知的某些特定的文件類型。一旦我推動它,花費的時間比平時長。如果確實需要很長的時間,或者可能會保持凍結,我會有第二個想法,假設有一些缺失的要求。 LFS提供了額外的10GB存儲空間(不知道它是否是每個repo),並且因爲它假設存儲大型文件,我相信。

爲了安心,確保成功的在線備份,同時保持版本控制,我該怎麼做?我暫時創建了Google Drive(不是備份大型項目文件的最佳方式),以便在解決GIT問題時在線備份我的大文件。 Bitbucket可能是最適合小型遊戲項目(2D或3D)的東西,但除了其他替代方案外還有其他替代方案GitHub,Bitbucket和SVN?免費的git回購網站包含非常大的回購大小存儲空間?

另外,關於LFS,我應該在繼續跟蹤已知具有大組文件大小的文件類型(例如.psd,.mp3,.dae ...)之前使用BFG嗎?

回答

1

你可以調整你的回購的git的命令行,步驟如下:

  1. 克隆的回購協議文件的本地git clone <URL>
  2. 列表的大小,然後你可以決定哪些需要刪除,使用find . -type f -printf "%s\t%p\n" | sort -nr | head -n 100
  3. 清潔的歷史和節省空間無效,您可以使用下面的命令:

git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch filename' --prune-empty -f -- --all

rm -rf .git/refs/original/

git reflog expire --expire=now –all

git gc --prune=now

git gc --aggressive --prune=now

  • 推調整大小後的本地回購到遠程,使用git push origin --force –allgit push origin --force –tags
  • 注:如果您在OSX操作系統,您還可以參考Steve Lorek's blog

    因爲GitHub的和到位桶是不同的遠程的git的,所以其中的GitHub,到位桶和SVN的區別主要是版本控制系統的差別(VCS)在GIT和SVN之間,你可以參考here。對於GitHub和Bitbucket,如你所知,Bitbucket可以免費創建私人回購(如果你的回購使用不到5個用戶),但GitHub需要支付私人回購。所以我總是在GitHub和Bitbucket上的私人存儲庫上創建公共存儲庫。

    第二部分

    另一種情況,在\ .git\objects\目錄中有兩個具有鬆散的對象和打包文件,所以我們都可以鬆對象轉換爲打包文件,然後用包文件處理。

    1. 隱蔽所有鬆散物體進入打包文件git gc,並檢查包裝尺寸git count-objects -v
    2. 顯示.idx打包文件find .git/objects/pack,假設名稱爲pack-8319f98bb0c73a6f3f15905772e8743bf2d28dfd.idx
    3. 榜榜首3個最大的對象git verify-pack -v .git/objects/pack/ pack-8319f98bb0c73a6f3f15905772e8743bf2d28dfd.idx |sort –k 3 –n | tail -3,然後將複製的SHA-1的值最大的對象,假設SHA-1是ac78de3
    4. 找到最大文件git rev-list --objects --all | grep ac78de3,假設最大文件是src.zip
    5. 查找提交其改變最大的文件git log --oneline --branches – src.zip歷史,複製最早提交ID,假定它是a50197e
    6. 刪除從最早的改變提交歷史文件git filter-branch --index-filter 'git rm --ignore-unmatch --cached git.tgz' -- a50197e ^..
    7. 刪除無用的參考rm -Rf .git/refs/originalrm -Rf .git/logsgit gcgit prune --expire now
    8. 回顧包大小git count-objects -v
    +0

    我在步驟3,'git filter-branch part'部分。在處理時,我看到有一個「.git-rewwrite」文件夾。我應該添加並提交併推送該文件夾或以後? –

    +0

    沒關係。該文件夾是臨時的。 –

    +0

    @Tredecies Nocturne,你可以試試** git filter-branch --tree-filter'rm -f filename'HEAD **改爲 –

    相關問題