提交的大文件损坏了我的GIt存储库

时间:2010-10-26 20:06:27

标签: git

我想将sql文件移动到与某些编码相关的登台服务器。我忽略了它的大小为1Gig并提交文件的事实。我不记得它是否已完成提交,但我继续提交不同文件的其他更改。现在当我在我的登台服务器上并从开发中获取或拉取更改时,我得到内存不足错误。我在开发系统上看到了顶部,并且在获取期间正在使用所有内存。

有没有办法让Git完全忘记我曾经提交过大型sql文件? 我的开发系统是MacOS,升级是Linux。

1 个答案:

答案 0 :(得分:3)

是。但是你必须通知那些拉动重新克隆存储库以避免后来出现问题的人。您需要做的是rebase-interactive提交所在的分支并删除提交。从没有其他引用(分支,标记等)引用它的那一刻起,提交将保持约30天(默认情况下)。这为您提供了足够的时间来改变主意。当然,如果您希望修剪reflog,然后垃圾收集存储库以立即缩小存储库。

例如:

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

然后你会打开一个编辑器,列出自100次提交以来的提交。找到添加该大文件的提交,并在编辑器中删除其行。保存并退出。

如果他们在提交大文件后从该存储库中撤出,这将使每个人的存储库无效。今天一定要对他们好。