从Git仓库中删除目录

时间:2014-06-17 21:38:54

标签: git github version-control

我有一个我一直在做的本地Git回购。该项目有一个master和dev分支。我的更改目前都在开发分支内。

问题是我意外地将2个包含高分辨率图像和.mov文件的文件夹从我的iPad中删除到我的仓库中的文件夹中,并在没有注意的情况下提交。

我最初删除了(通过文件系统)文件夹并且只是提交了删除,但我遇到的问题是我无法推送到远程仓库,因为我用git推送了1.7gb的数据给了我一个由于部分电影的文件大小导致致命挂起错误。

我尝试增加git配置缓冲区大小以允许更改被推送但是没有用。

在搜索了几个答案后,我恢复了我的提交,将文件重新放入并尝试通过git删除以下“git rm -r folderpath”

然而,当实际回购只有大约13Mb时,回购似乎仍然试图推动所有1.7gb。

所以我的问题是如何将其降低到实际尺寸以允许我将其推送到远程仓库?

由于

3 个答案:

答案 0 :(得分:0)

我假设您不需要在错误提交后继续提交。如果这个假设是错误的,那么解决方案就更复杂了。

首先,您需要在错误提交之前立即将开发分支移动到提交。我们可以在this answer中描述之后,在错误之前获取提交的哈希值之后执行此操作。

git branch -f branch-name new-tip-commit

接下来,您应该确保没有其他分支指向包含错误提交的提交历史记录,方法是使用相同的命令移动所有其他分支,直到它们的历史记录中没有错误提交为止。

然后,您可以使用git gc命令调用git垃圾收集器。

答案 1 :(得分:0)

您需要在添加大文件之前将开发分支重置为某一点(或者,如果您已经完成了之后要保留的工作,那么在这样的点上进行rebase --interactive并删除错误的提交(和任何恢复)来自rebase列表)

一旦无法再提供错误提交,您就可以做到     git --prune=<date/time after you added large files> gc 从存储库中删除坏对象。

答案 2 :(得分:0)

感谢您的回答,并对迟到的回复表示歉意。我尝试了垃圾收集,但这给了我一些错误,这引起了更多的麻烦。

最后,由于我不得不把它推到最后期限,我只是删除了我的本地仓库,克隆并复制了我的更改并推回。不理想,但完成了工作。

我将尝试使用git branch选项,因此如果遇到类似的问题,我知道如何在git中解决问题。

干杯