我是一個相對的git新手,正如你即將看到的。所以請原諒我糟糕的使用git術語,我還在學習。遠離本地回購:Git並忘記大文件
問題的簡要總結:我想把我的本地回購在GitHub,但我有一些以前跟蹤的文件太大了。
背景: 今天早上我有一個本地庫文件所在的種種都被跟蹤,R腳本,.RData文件的.csv的,等我決定,我想讓我的倉庫公開提供其推到GitHub。
當我試圖推送(使用git remote add origin https://github.com/me/repo.git
後跟git push -u origin master
)時,我意識到我的一些大型數據文件對於GitHub來說太大了。我已經決定,如果.RData文件沒有被推送到GitHub,並且沒有被git跟蹤(儘管我不想在本地刪除文件),那將是可以的。但我無法弄清楚如何做到這一點。
事情我已經迄今爲止嘗試:
- 首先,我加入.RData文件到.gitignore文件以。我很快意識到 這對於已經被跟蹤的文件沒有任何作用。
- 我用
git rm -r --cached .
其次git commit -am "Remove ignored files"
,認爲這將幫助混帳忘記所有那些巨大的 文件,我只是忽略了。 - 進一步在git幫助頁面後,我嘗試了
git commit --ammend -CHEAD
,但我仍然無法推送。 - 我試圖使用BFG,但我沒有得到很遠與它 B/C它顯然沒有發現任何文件大於100M。顯然我 出了問題,但決定不再追求。
- 以下提示我發現HERE,然後我嘗試了
git filter-branch --tree-filter 'git rm -r -f --ignore-unmatch *.RData' HEAD
。這確實做了一些事情,但我仍然無法推動。 但是,現在我想下載太大的文件(儘管同一 目錄中的其他.RData文件不再列出),但不是太大的文件。
我最後git push -u origin master --force
後,這是在終端打印出:
Counting objects: 1163, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (1134/1134), done.
Writing objects: 100% (1163/1163), 473.07 MiB | 6.80 MiB/s, done.
Total 1163 (delta 522), reused 0 (delta 0)
remote: error: GH001: Large files detected.
remote: error: Trace: 4ce4aa642e458a7a715654ac91c56af4
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File Results/bigFile1.RData is 166.51 MB; this exceeds GitHub's file size limit of 100 M
remote: error: File Results/bigFile2.RData is 166.32 MB; this exceeds GitHub's file size limit of 100 MB
To https://github.com/me/repo.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/me/repo.git'
如果你還沒有猜到了,我真的不知道我在做什麼,我主要是嘗試我能找到的任何代碼片段,並看看它是否允許我推送。我所有的數據和文件都已備份,所以我正在相當公然的嘗試。
鑑於我不願意跟蹤巨大的.RData文件,我該如何讓我的本地回購到我可以推送到GitHub的地步?
任何幫助將非常感激。謝謝!
好的,所以我走在了正確的軌道上。要清楚,我必須使用'git filter-branch -f --index-filter'git rm -r -f --ignore-unmatch * .RData'HEAD'。所以不是'--tree過濾器',而是'--index-filter'。另外,因爲我已經完成了其中的一個,所以我必須添加第一個'-f'來覆蓋各種「備份」。 – rbatt 2014-10-07 14:45:54