4
我想將sql文件移到與某些編碼相關的登臺服務器。我忽略了它是1Gig的大小並且承諾了這個文件。我不記得它是否完成了提交,但我繼續從不同的文件進行其他更改。現在,當我在登臺服務器上,並從開發中獲取或提取更改時,出現內存不足錯誤。我在開發系統上觀看了頂部,並在獲取期間使用了所有內存。承諾大文件損壞我的GIt存儲庫
有沒有辦法讓Git完全忘記我曾犯過大型的sql文件? 我的開發系統是MacOS,分段是Linux。
我想將sql文件移到與某些編碼相關的登臺服務器。我忽略了它是1Gig的大小並且承諾了這個文件。我不記得它是否完成了提交,但我繼續從不同的文件進行其他更改。現在,當我在登臺服務器上,並從開發中獲取或提取更改時,出現內存不足錯誤。我在開發系統上觀看了頂部,並在獲取期間使用了所有內存。承諾大文件損壞我的GIt存儲庫
有沒有辦法讓Git完全忘記我曾犯過大型的sql文件? 我的開發系統是MacOS,分段是Linux。
是的。但是,你必須通知任何拉來重新克隆存儲庫的人,以避免後面的麻煩。你需要做的是通過rebase交互提交的分支並刪除提交。從沒有其他引用(分支,標籤等)引用它的那一刻起,提交將保持約30天(默認情況下)。這給你足夠的時間以後改變主意。當然,如果您希望修剪reflog,然後垃圾收集存儲庫以立即收縮存儲庫。
例如:
git checkout contaminated-branch
git rebase -i HEAD~100 # if 100 commits ago is long enough
然後你就會有一個編輯器打開,並列出提交,因爲100承諾前。找到添加該大文件的提交,並在編輯器中刪除其行。保存並退出。
如果他們在提交大文件後從存儲庫中提取,則會使每個人的存儲庫失效。確保今天對他們很好。