tags:

views:

2428

answers:

3

Is there a way to entirely remove a directory and its history from GitHub?

+2  A: 

Go to the edit tab; there’s a delete link at the bottom of the page.

Geoffrey Chetwood
Not as in-depth as the expected answer. Did not mention name of label, what side of the page, etc.
Nick Stinemates
Wish I could edit. I meant accepted answer.
Nick Stinemates
+11  A: 

If you are asking about deleting a project from GitHub, open your project, click the "Admin" tab (or browse directly to https://github.com/username/project_name/edit) and on the bottom of the page, click "Delete This Repository". It'll ask you to confirm this, and then it's gone.

If you just want to erase a part of your repository, you need to do it to your git repository and push it to GitHub. GitHub has written a howto about this in their FAQ. Haven't tried this myself, I can't guide you further, but you probably can manage this yourself here on.

In either case, this, naturally, doesn't delete any third party pulls – if someone has pulled the repository before you deleted it, it's out, without you being able to do much about it (other than trying the "pretty please"-technique)

Henrik Paul
I don't know where I heard that first, but there is a nice saying in the Git community: "Git works just like the real world: if you want to rewrite history, you need a conspiracy". IOW, if you want to remove a directory from the history, everybody who ever cloned that repository has to be "in on it"
Jörg W Mittag
Yeah, that, or they mistakenly pull from the central git repo. I guess that way their local histories would be erased too, although I'm not sure...
Henrik Paul
No, they won't. Old history only gets deleted when it is no longer referenced by anything *and* you run the garbage collector. Which means that by default it won't get deleted for at least 2 weeks, because that's how long they will stay in the reflog. As long as they are in the reflog, you just ...
Jörg W Mittag
... do `git checkout HEAD@{10.minutes.ago}` and you're back in business.In distributed version control, you have *no control* over what anybody else does with their repositories. That's the *point* of DVCS. (No *technical* control. You could have *social* controls, like work contracts.)
Jörg W Mittag
+3  A: 

To selectively delete a file or directory (and all its associated history), you can use git filter-branch.

This is very useful when you want to completely delete files checked into the repository by mistake.

The syntax is simple:

git filter-branch --tree-filter 'rm -f filename' HEAD

More info on the man page.

Baishampayan Ghose
Doesn't really answer the question asked by the author, however it is definitely useful.
Nick Stinemates