2010-10-26 97 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承诺前。找到添加该大文件的提交,并在编辑器中删除其行。保存并退出。

如果他们在提交大文件后从存储库中提取,则会使每个人的存储库失效。确保今天对他们很好。

相关问题