2015-11-01 143 views
3

我有一個.framework文件相當大,由於某種原因,Git LFS無法正常工作,所以我決定忽略它,以免推送。Git仍然試圖推送被忽略和刪除的文件

  1. 我將它添加到我的.gitignore
  2. 我跑這3個命令從

    終端
    git rm -r --cached . 
    git add . 
    git commit -m "fixed untracked files" 
    
  3. 我證實,.framework不再被跟蹤。

  4. 當我嘗試再次推送提交時,仍然收到文件太大的錯誤。

    remote: error: GH001: Large files detected. You may want to try Git Large 
    File Storage - https://git-lfs.github.com. 
    remote: error: Trace: 6b97634aa8b5de75e8affdcb19d13b98 
    remote: error: See http://git.io/iEPt8g for more information. 
    remote: error: File path/to/My.framework/Versions/A/My is 101.13 MB; 
    this exceeds GitHub's file size limit of 100.00 MB 
    
  5. 我也刪除了文件,完全和它仍然試圖推動它。

.framework並不總是那麼大。它只是最近才變得> 100MB,所以它用來推動沒有問題。這裏有解決方案嗎?

+0

大文件現在被推送還是已經存儲在存儲庫中,並且刪除失敗(這應該不是我想的問題,但我可以看到讓某些東西感到困惑)。 'git show'對當前提交說了什麼? –

+1

你是否阻止*文件*'.framework'或*目錄*'My.framework'? – Makoto

+0

該文件已在存儲庫中存儲一段時間,大約21 MB,但最近我使用Xcode 7(啓用了「Bitcode」)重建了它,並且它增長到了106 MB。這是推動開始失敗的時候。我禁用了「Bitcode」,現在它已經回到了21 MB的大小。然而,推動仍然失敗。 @Makoto我忽略了目錄'My.framework'。 –

回答

0

當你推,你不只是推一個提交,你推動遠程還沒有提交的所有提交。我認爲你做了這樣的事情。

1. Push/pull to be in sync with the remote. 
2. Commit the large file. 
3. Delete the large file. 
4. Push. 

現在您正在推送添加大文件的提交和刪除它的提交。他們必須推。

你可以用git log --stat origin/master(假設遠程是origin,分支是master)檢查將要推送什麼。特別是,提交6b97634aa8b5de75e8affdcb19d13b98將是問題。

如果是這樣,您將不得不delete the large file from history

但鑑於您在使用麻煩都的git-LFS 推,我覺得還有別的怎麼回事。我懷疑有另一個大文件你錯過了。也許你可以顯示你的實際存儲庫?

+0

感謝您的澄清。實際上,通過禁用「Bitcode」,我將'.framework'縮小到了合理的大小(21 MB)。我從'.gitignore'中刪除它,並嘗試了一個新的提交/推送,但得到了同樣的錯誤(說它是101.13 MB,即使它現在只有21個)。你建議我做什麼? –

+0

@Kevin_TA就像我說的,你必須[***從歷史***刪除它](https://help.github.com/articles/remove-sensitive-data/)。這意味着重寫你的提交(而不是創建新提交),以便它*從不存在*,因此不需要推送。你可以做更多細微的事情,而不是簡單地消除它,就像每個歷史提交沒有Bitcode再生它,因此它變得更小。這些都涉及'git filter-branch',或者如果沒有太多的提交,你可以用'git rebase -i'手動完成。這是另一個問題。 – Schwern

+0

感謝您的幫助。我實際上最終做出了我想要保留的更改(物理文件)的備份,在用'Bitcode'構建'.framework'之前重置提交,複製到已更改的文件上,然後重新提交併推。終於工作了。 –