2012-01-14 113 views
1

我想我的git回購推送到Heroku的服務器,現在我曾經有一個大的供應商文件夾,但我刪除它使用:如何更新GIT中的緩存?

git rm -r --cached vendor 

而我卻在這個階段沒有問題,反正以後我刪除了文件,並提交了所有內容,似乎每當我進行推送時,我仍然使用相同的文件(甚至是我刪除的文件),但我確定它會被緩存,所以我該怎麼做刷新緩存?我嘗試了很多東西,比如更新索引,但這很奇怪,因爲我現在仍然在推送20 MB而不是2 MB。

任何幫助將不勝感激。

+2

這真的很難理解你的處境。您是否確實承諾刪除您推送的分支中的這些文件? ('git show branch-name:vendor'應該告訴你路徑不存在)你擔心託管版本庫的大小嗎? (您不能完全刪除這些文件,並在不重寫歷史的情況下重新獲得該空間。)您似乎也可能對「索引」等術語感到困惑 - 您可能會從閱讀http://progit.org/book的第一部分/或http://book.git-scm.com/,或者http://tom.preston-werner.com/2009/05/19/the-git-parable.html – Cascabel 2012-01-14 02:26:12

+0

「每當我推我仍然使用相同的文件「< - 你是什麼意思?另外,請記住,'git rm -r --cached'從索引中刪除文件,_not_工作樹 – fge 2012-01-14 12:45:57

+0

我在這裏完全困惑,但在主分支例如我只是刪除了供應商目錄,git show master:vendor shows路徑並不存在,但由於某種原因,文件似乎仍然存在(至少整個項目的大小仍然相同),我怎樣才能完全刪除文件夾,就像從歷史記錄和一切,我只是想簡單的把代碼推到heroku服務器上,而不是花費那麼多時間,是可以做到的嗎? – 2012-01-14 15:13:55

回答

4

> 我該如何完全刪除文件夾,就像從歷史和所有內容一樣?

這是git filter-branch可能派上用場的地方。以下應該做的伎倆。

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch vendor' --prune-empty -- --all 

注:確保與git filter-branch打之前使你的項目的本地副本,特別是如果你嘗試(以下鏈接引用更多關於這個)回收一些空間。

一旦您的歷史記錄清理完畢,以下將替換爲您的上游存儲庫與重寫的一個。

$ git push origin --all --force

我強烈建議你之前閱讀下面鏈接運行的任何命令。真的:)

參考