在git repo服务器中删除或还原git commit

在git repo服务器中删除或还原git commit,git,Git,我的一位团队成员意外地在git服务器上提交并同时推送了如此大和多的文件(5GB)。这是一个承诺 其他团队成员都无法获得git更新,因为它太慢了(可能需要5~6个小时或更长时间)。因此,我认为我们不能在本地机器上删除提交,因为我们还不能更新提交。(git恢复、git重置等)不幸的是,她下班了,所以我们无法访问她的本地机器。 但是,我们可以使用shell访问git repo服务器 project3.git 和文件夹 HEAD config description hooks info

我的一位团队成员意外地在git服务器上提交并同时推送了如此大和多的文件(5GB)。这是一个承诺

其他团队成员都无法获得git更新,因为它太慢了(可能需要5~6个小时或更长时间)。因此,我认为我们不能在本地机器上删除提交,因为我们还不能更新提交。(git恢复、git重置等)不幸的是,她下班了,所以我们无法访问她的本地机器。

但是,我们可以使用shell访问git repo服务器

project3.git
和文件夹

HEAD  config  description  hooks  info  objects  packed-refs  refs
因此,如果可能,我们希望直接在服务器上使用shell命令还原或删除提交或文件。那么我们的团队成员就不需要更新了
有办法吗


更新:我们知道提交名称。ex)
33aedaf55e
注意:在做任何事情之前,您应该备份远程存储库的副本

如果要在远程回购中重置分支: 在远程回购中,显示最近的历史记录:
git log-3

* 33aedaf - (HEAD, master) commit with big file
* f18fd52 -  some other commit
* 160c78f - another commit
将分支引用(此处假定为master)设置为上一次提交:
git update ref refs/heads/master f18fd52
在此之后,在主分支上执行
git fetch
将不会获取大文件。我们所做的类似于git重置--hard f18fd52

不过,这个大文件仍然存储在远程repo中。您可以列出无法访问的对象:
git fsck--unreachable
并删除所有无法访问的对象:
git-gc--prune=all
。请注意,这将删除所有无法访问的对象,因此首先确保分支指针看起来正常


请注意,我们所做的基本上是重写历史。如果有人已经用这个巨大的文件完成了提交并开始处理它,那么当他试图推动提交时,可能会出现新的问题,因此您可能应该通知所有与repo合作的同事您所做的事情。

首先检查
git log
并查看最新的提交名称感谢穆罕默德,我在线程中添加了答案。这是一个错误的提交,有5 GB的文件。还是之前的那个?提交,我要删除的5G文件提交。5G提交是推送到git的最新提交吗?