git filter-branch --tree-filter 'rm -f <file>' HEAD
錯誤現(xiàn)象:
今天使用 git push origin master
的時候報錯鬼店,說有文件過大咐柜,push
失敗。
錯誤原因:
后來查證 github 有大文件限制通孽, 50~100M Warning序宦,100M 以上直接 error。然后我就去找到那個文件將其刪除了背苦,發(fā)現(xiàn)還不行互捌。
錯中錯:
原來在我以前的提交中潘明,已經(jīng)把他提交到本地倉庫了。我現(xiàn)在雖然將其刪除了秕噪,但在前幾次的快照中還是存在這個文件的記錄钳降。需要上面這句話來刪除歷史提交中的此文件。
但是又來一個錯:
在解決這個問題的時候腌巾,我執(zhí)行這句話一直報錯遂填。
git filter-branch --tree-filter 'rm -f java_pid4252.hprof' HEAD
fatal: ambiguous argument 'java_pid4252.hprof'': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
后來終于到 StackOverflow
上找到了,使用 "
替換掉 '
即可澈蝙。原來git
在 linux
上開發(fā)吓坚。在 windows
上面愛出各種各樣的錯誤。我執(zhí)行上面語句是在 AS
的 Terminal
中執(zhí)行灯荧,出了錯礁击。最好是在 git bash
中操作 git
。在其它終端上面的話逗载,你可能會需要一顆強大的心臟哆窿。
以前也遇到過類似的情況,執(zhí)行 git reset HEAD^
的時候出來一個 More?
厉斟,也是這個原因挚躯,要使用 ~
替換 ^
。
還有在玩 githug
這個游戲時捏膨,提示出現(xiàn)在答案之后,讓我困在第二關許久食侮。
所以在此總結出号涯,當你在其它終端按照正確的步驟操作 git
卻出錯了,首先切換到 git bash
中去試試锯七。