2014-01-08 39 views
1

我是git的初學者,我使用具有文件大小限制的github。所以我有幾個提交,我想推他們到遠程回購,但我不能因爲文件大小。我刪除了文件並做了一個新的提交,但它仍然不允許我(因爲之前的提交) 有沒有辦法通過重置或擦除以前的提交併使全新或任何其他方式來解決此問題?謝謝!從提交中刪除文件(由於github上的文件大小)

+0

我相信這已經被問到=)。也許:http://stackoverflow.com/questions/1143796/git-remove-a-file-from-the-repository-without-deleting-it-from-the-local-filesy –

回答

1

的關鍵,在Git中向後移動在提交歷史是

git reset <commit> 

比方說,你的git圖表的外觀像這樣:

* commit 3 (HEAD, branch-1) 
| Adding a large file 
| 
| 
* commit 2 (branch-2) 
| Some changes 
| 
| 
* commit 1 

如果你有分支1簽出在abov例如,做一個git reset branch-2,分支-1將移動到提交2,大文件將成爲「未跟蹤文件」。對跟蹤文件的所有更改都將在「更改不進行提交」。一旦你執行重置,你可以通過「添加」或「檢出」文件來創建一個新的提交,只要你認爲合適。這個新的提交將不再有歷史上的大文件,你應該能夠推送到你的遠程倉庫。

你可以找到更多關於git reset here的信息。

在重置時,如果以前的提交沒有指向它們的分支,它們將不再可見。如果您覺得您可能需要這些舊提交,則可以在我們的示例中創建指向提交3的臨時分支。或者,您可以使用git fsck再次查找舊提交。

1

你可以從回購的歷史記錄中刪除那個大文件與BFG repo cleaner tool

$ java -jar bfg.jar --strip-biggest-blobs 500 some-big-repo.git 

$ cd some-big-repo.git 
$ git reflog expire --expire=now --all 
$ git gc --prune=now --aggressive 

$ git push