Search code examples
gitgithubgit-rebase

Remove commit for good


I know there are thousands of threads for this question.

But I found out something really weird.

If you create a project on GitHub, do some commits.
Let's say commit 1, 2, 3, 4, 5.
Later, you realize you want to change something into commit 3.

As you were working in your own branch, no problem to rewrite history.

So let's do this: (based on this stackoverflow answer)

git rebase --interactive 'bbc643cd^'

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

Great! The mistake is corrected. The history has been rewritten, so the commit bbc643cd is now lkqjfhchc.
You can check the source on your GitHub and everything will have been updated.

But someone can still find it on GitHub!

Access the URL: https://github.com/your-nickname/your-project/commit/bbc643cd... (full commit hash) and you will find it!

How could we remove this commit for good?

Thanks for any help!


Solution

  • I contacted Github staff from here : https://github.com/contact

    Here's the answer (I couldn't do anything about it, no prune, no gc, etc)

    Hey Maxime,

    The commit was available because commits are not automatically deleted when they're removed from the history of a branch -- they're deleted when they're garbage collected. I just ran garbage collection for that repository manually and the commit should now return a 404.

    How often does the garbage collector run on your end?

    GitHub doesn't have a scheduled garbage collection process. We don't clear repository caches automatically (we're in the version control business, so we don't delete data unless we absolutely have to 😉) so usually, the only reason we would do that is if we had someone writing in to us asking for us to clear them as part of the sensitive data removal process.

    It's also possible we might clear the cache for technical reasons if the content or structure of the repo was causing us difficulties to host it, but that would usually only happen if the repo was exceptionally large or had a wildly structured folder layout.

    Please let me know if you have any questions about this or anything else.

    Hope this helps.

    Cheers, XXXXX

    So you just have to wait or contact staff to force garbage collector in case you have the same problem !