2014-10-07 22 views
1

我是一個相對的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跟蹤(儘管我不想在本地刪除文件),那將是可以的。但我無法弄清楚如何做到這一點。

事情我已經迄今爲止嘗試:

  1. 首先,我加入.RData文件到.gitignore文件以。我很快意識到 這對於已經被跟蹤的文件沒有任何作用。
  2. 我用git rm -r --cached .其次git commit -am "Remove ignored files",認爲這將幫助混帳忘記所有那些巨大的 文件,我只是忽略了。
  3. 進一步在git幫助頁面後,我嘗試了git commit --ammend -CHEAD,但我仍然無法推送。
  4. 我試圖使用BFG,但我沒有得到很遠與它 B/C它顯然沒有發現任何文件大於100M。顯然我 出了問題,但決定不再追求。
  5. 以下提示我發現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的地步?

任何幫助將非常感激。謝謝!

回答

1

我很確定你只需要將它們從你的.git回購歷史中刪除。不只是從最新版本中刪除它們,它們需要從您存儲庫中存在的任何一箇中刪除。

該技術在其他地方介紹,請參閱this stackoverflow postthe BFG tool

+0

好的,所以我走在了正確的軌道上。要清楚,我必須使用'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