8

可能重复:
如何删除 github 上的提交?

所以我们项目的一个团队成员已经提交了 700 多兆的废话并将其推送到我们的 git 项目存储库中……她以为她只添加了 2 张图像,但不知何故最终将她桌面的全部内容复制到了 git 文件夹中,不知何故提交它。我不知道为什么她觉得两张照片上传花了 20 分钟并不奇怪...

无论如何,作为这个项目的负责人,我现在陷入了困境。据我所知,我有 2 个选择,我不喜欢任何一个

  1. 我可以从 bitbucket 中删除存储库,然后使用我想要的文件重新启动它。这将删除所有以前的编辑,因为只有我想要的文件的当前版本可用

  2. 我可以删除错误数据并推送更改。只有我们想要的文件将被进一步管理,但她在那里放置的所有额外的杂物将永远存在于 git 中,使我们的项目膨胀 100 倍。

有什么方法可以真正永久删除提交,就好像它从未发生过一样?除了更多的补救性 git 培训之外,管理这个问题的最佳方法是什么……

4

2 回答 2

2

我会做

$ git checkout master~1 -b newmaster
$ git branch -D master
$ git reflog expire --expire=now --all
$ git gc --prune=now
$ git checkout -b master
$ git branch -D newmaster

gc 应该做垃圾收集。我认为您可以在服务器上执行此操作。

于 2012-12-30T22:56:54.880 回答
1

我不知道 bitbucket 是否允许,但你可以这样做:

git reset HEAD~
# Or the SHA of the version before the huge commit
git push --force
于 2012-12-30T22:57:47.917 回答