2010-10-26 92 views
4

我想將sql文件移到與某些編碼相關的登臺服務器。我忽略了它是1Gig的大小並且承諾了這個文件。我不記得它是否完成了提交,但我繼續從不同的文件進行其他更改。現在,當我在登臺服務器上,並從開發中獲取或提取更改時,出現內存不足錯誤。我在開發系統上觀看了頂部,並在獲取期間使用了所有內存。承諾大文件損壞我的GIt存儲庫

有沒有辦法讓Git完全忘記我曾犯過大型的sql文件? 我的開發系統是MacOS,分段是Linux。

回答

3

是的。但是,你必須通知任何拉來重新克隆存儲庫的人,以避免後面的麻煩。你需要做的是通過rebase交互提交的分支並刪除提交。從沒有其他引用(分支,標籤等)引用它的那一刻起,提交將保持約30天(默認情況下)。這給你足夠的時間以後改變主意。當然,如果您希望修剪reflog,然後垃圾收集存儲庫以立即收縮存儲庫。

例如:

git checkout contaminated-branch 
git rebase -i HEAD~100 # if 100 commits ago is long enough 

然後你就會有一個編輯器打開,並列出提交,因爲100承諾前。找到添加該大文件的提交,並在編輯器中刪除其行。保存並退出。

如果他們在提交大文件後從存儲庫中提取,則會使每個人的存儲庫失效。確保今天對他們很好。