2015-10-30 25 views
0

我在本地機器上創建了一個項目並配置了一個我想要推送的遠程存儲庫。當試圖推送我的代碼時,出現了一個錯誤,這是由於文件的大小非常大。因此,我使用rm -f <filename>命令從本地機器中刪除了該文件。然後,我運行git rm <filename>並將更改添加到暫存區域,並稍後進行更改。承諾的更改無法推送到遠程

現在,當我嘗試將更改推送到遠程時,出現同樣的錯誤,指出文件大小很大。我沒有在我的工作區上的文件,此外,git status命令顯示工作區是乾淨的。此外,git log命令顯示提交文件的刪除。您能否讓我知道如何排除故障以及我出錯的地方。還有如何解決這個問題。

回答

1

巨大的文件仍然在你的Git歷史中。您需要刪除它,而不僅僅是回購,而是從Git歷史記錄中刪除。 https://rtyley.github.io/bfg-repo-cleaner/將有所幫助(請參閱How to remove/delete a large file from commit history in Git repository?以解決具有相同問題的其他人)。摘要:

  1. 克隆的回購和工作,對克隆(所以你有你原來的,如果出現錯誤備份):git clone --mirror /path/to/your/repo cloned-repo-to-trim
  2. 按照BFG usage instructions剝離出大文件(像java -jar bfg.jar --strip-blobs-bigger-than 100M cloned-repo-to-trim)。
  3. 在克隆的repo中運行git gc --prune=now --aggressive以徹底擺脫大型提交。
  4. 驗證克隆的repo仍然具有所有其他應該具有的提交,然後將其推送到您的遠程。

希望這會有所幫助。

+0

警告:如果他確實需要某些大文件,那麼他不應該刪除它們。在這種情況下,選項將切換到允許大文件(如BitBucket)的存儲庫服務,或者可能考慮將代碼庫的一部分從Git移出並轉移到另一個VCS工具中。 –