删除提交

时间:2016-01-03 22:42:01

标签: git github git-rebase

我知道这个问题有数千个主题。

但我发现了一些非常奇怪的东西。

如果您在GitHub上创建项目,请执行一些提交 让我们说提交1,2,3,4,5 之后,您意识到要将某些内容更改为commit 3。

当您在自己的分支机构工作时,重写历史记录没有问题。

所以让我们这样做:(基于this stackoverflow回答)

git rebase --interactive 'bbc643cd^'

// Modify 'pick' to 'edit' into interactive prompt and :
git commit --all --amend --no-edit
git rebase --continue
git push -f

大!错误得到纠正。 历史记录已被重写,因此提交bbc643cd现在为lkqjfhchc 您可以在GitHub上查看源代码,所有内容都已更新。

但有人仍然可以在GitHub上找到它!

访问网址:https://github.com/your-nickname/your-project/commit/bbc643cd ...(完整提交哈希),您会找到它!

我们怎样才能彻底删除此提交?

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

我从这里联系了Github的工作人员:https://github.com/contact

这是答案(我对此无能为力,没有修剪,没有gc等)

  

嘿Maxime,

     

提交可用,因为提交不会自动删除   当他们从分支的历史中删除时 - 他们被删除了   当他们被垃圾收集。我只是为此运行垃圾收集   手动存储库,提交现在应返回404。

     

希望这有帮助。

     

干杯,XXXXX

所以你只需等待或联系工作人员强制垃圾收集器,以防你遇到同样的问题!

答案 1 :(得分:0)

根据您的其他评论:

你做了应有的一切 关键在于:git永远不会丢失数据,除非你告诉它(什么是gc - garbadge collector)

文件将保留在那里,直到它们将被调用gc。

这称为dangling file

  

悬空提交

     

未直接或由其任何优先级链接到任何分支或标记的提交。

您可以在本地查看所有悬空参考:

git fsck --full

enter image description here

摆脱它的唯一方法是运行gc

//
// !!!Caution:
// It will remove all your dangling files
git gc --aggressive --prune now

Here您可以阅读更多相关信息。