自己的項目的版本控制用的是Git,代碼倉庫在github托管。項目裡用到了百度導航SDK,由于百度導航SDK有了新版本,于是就更新到了新版本,更新好了之後想把代碼push到github上,結果出錯了,被拒絕,具體資訊是:


意思是有大檔案,更多資訊可到http://git.io/iEPt8g檢視,檔案libbaiduNaviSDK.a的大小超過了GitHub限制的100M大小。想要push,必須把這個檔案移除,可是要怎麼移除呢?開始我是想着直接删除掉libbaiduNaviSDK.a,結果不行,還是會報上面的錯,于是我又把libbaiduNaviSDK.a放到忽略檔案裡,結果還是不行,還是說有大檔案,報同樣的錯。這下隻能老老實實的看官方的解決辦法了,于是就打開http://git.io/iEPt8g老老實實的研究了一番。大意是說為了便于管理代碼庫和友善合作夥伴們使用,當你push50M以上的檔案時github将會警告,當push100M以上檔案,就直接拒絕你的push,要想push必須把該檔案從本地倉庫和遠端倉庫全部移除掉。這個移除會永久性的從本地git和github裡移除,如果這個檔案很重要,要記得做一次備份。
下面進入具體操作,如果這個檔案是最近一次commit的,并且你還沒有push到github
(1)那麼第一步輸入指令 cd /Users/Dora/Desktop/XXX(cd後面的這個路徑要換成你自己項目的路徑)
(2)然後第二步輸入指令 git rm --cached /Users/Dora/Desktop/XXX/XXX/libbaiduNaviSDK.a(加下劃線部分是你自己的要移除的檔案的路徑)
(3)第三步輸入指令 git commit --amend -CHEAD,執行完這步後,這個大檔案将會從你的commit記錄裡移除,并且以後commit都将不會再把它commit了,這時候就可以git push把本地代碼push到github上了。
注意:這裡可能遇到輸入git rm --cached /Users/Dora/Desktop/XXX/XXX/libbaiduNaviSDK.a指令後說找不到你要删除的檔案的問題,出現這個問題的原因是你要删除的檔案路徑名沒寫對,一定要仔細檢查,確定要删除的檔案的路徑是正确的。
如果做了這幾步你push的時候還是報和開始的時候一樣的錯,那說明這個檔案你不是最近一次commit時添加的,而是在之前commit過很多次了,這就需要把關于這個檔案的所有曆史commit記錄全部清除掉,這時候我們就需要用到一個叫BFG的工具。我們要到https://rtyley.github.io/bfg-repo-cleaner/#download這個網站去下載下傳并學習如何使用這個工具,使用如下:
(1)首先先得把這個軟體下載下傳下來,輕按兩下它,如果你的電腦沒有java的SDK,按照提示安裝好,否則BFG将運作不了。
(2)好了之後,我們要cd進BFG檔案所在目錄,然後操作如下:
第一步:輸入指令java -jar bfg.jar --no-blob-protection --strip-blobs-bigger-than 50M my-repo.git
第二步:cd my-repo.git
<code><code>第三步:</code></code><code><code><code>git reflog expire --expire=now --all && git gc --prune=now --aggressive</code></code></code>
<code><code><code>第四步:</code></code></code><code><code><code><code>git push</code>,到此大功告成。你的commit曆史裡所有大于50M的檔案的commit全部被清除,這樣你就可以push到github上了。</code></code></code>
注釋:紅色部分是你下載下傳下來的檔案的名字,藍色部分是你需要移除的檔案大小,橙色部分是你自己.git檔案的路徑
這裡可能遇到輸入指令java -jar bfg.jar --strip-blobs-bigger-than 50M my-repo.git後bfg運作不成功的問題,原因是java -jar bfg.jar這個指令必須要在bfg.jar所在目錄下運作才行,否則系統将不知道bfg.jar檔案在哪裡,是以執行不成功。是以我們要先cd到bfg.jar所在目錄,然後在執行ava -jar bfg.jar --strip-blobs-bigger-than 50M my-repo.git指令。對于不熟悉指令行的人來說最容易犯這些錯誤了。
<code> </code>
程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!
本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/6141603.html,如需轉載請自行聯系原作者