Question on git-filter-branch
- From
Bill Lear <rael@zopyra.com>
- Date
- Nov 1, 2007, 12:55 UTC
- Message-ID
- <18217.52425.655322.52338@lisa.zopyra.com>
In my repo, I have sensitive files A, C, and a directory full of sensitive stuff I want to remove forever from the git repository.
% ls A B C D sensitive_stuff
% git --version git version 1.5.3.5
% git filter-branch --index-filter 'git update-index --remove A' HEAD Rewrite 5dd7d5f2d7d3a5f43c242188ac96294628267673 (7/7) Ref 'refs/heads/master' was rewritten
These refs were rewritten: % ls B C D sensitive_stuff
% git status # On branch master nothing to commit (working directory clean)
Ok, so I guess it has done what I wanted. So, I try to remove the next file that has sensitive information in it:
% git filter-branch --index-filter 'git update-index --remove C' HEAD Namespace refs/original/ not empty
And there I am stuck: what do I do now?
I did also try this (on a fresh clone of the original repo):
% git filter-branch --index-filter 'git update-index --remove A C sensitive_stuff/*' HEAD Rewrite 5dd7d5f2d7d3a5f43c242188ac96294628267673 (7/7) Ref 'refs/heads/master' was rewritten
These refs were rewritten: % ls B D sensitive_stuff/ % ls sensitive_stuff E F G
So, that appears to have removed A and C, but it did nothing to the files in the subdirectory. Is there a way to remove the files in the subdirectory --- or, better, to simply remove the entire subdirectory?
I did try reading the man page for this, and the first example is essentially what I want. It says "you will get the rewritten history saved in HEAD", but I'm not sure what I'm supposed to do next.
Bill