所以我使用git一次(大量)删除了大量文件。
但后来我使用git rm
从git数据库中删除目录,因为git开始需要很长时间才能从原点拉出来,但调用git rm
并没有解决问题 - git仍需要很长时间从原点拉出来的时间。
除了重新创建存储库以解决此问题之外,我还能做些什么?
答案 0 :(得分:2)
因为git保留了所有提交的历史记录,所以git repo中的内容在技术上是存在的(谢天谢地,这正是源代码回收的好处:)
您可以重写过去的历史记录以删除对该文件夹的所有引用。
此网站有一个使用filter-branch
的示例:
http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-a-git-repository
注意:您正在重写历史记录,您需要强制将repo推送到服务器。如果其他人正在使用/承诺它,可能会给他们带来一些麻烦。
编辑:关于该主题的另一篇有趣的读物:http://ramblinglabs.com/blog/2012/04/git-removing-sensitive-data-and-rewriting-history
答案 1 :(得分:0)
git rm
实际上不会删除您在存储库中引用的任何头的当前历史记录中提交的任何点的大对象(例如分支,标记等)
我不确定这是不是导致git拉慢的原因(根据我的经验,一旦你拉出一个很大的差异,事情应该恢复到后续拉动的快速和正常),但如果你怀疑它,您可以尝试使用git rebase
完全删除包含较大差异的提交。
完成后,您可以执行git gc
清理repo中的分离对象并减小整体大小。要与远程回购进行rsync,您需要进行强制推送。