{"thread":{"id":"10558","subject":"Question on git-filter-branch","startedAt":"2007-11-01T12:55:37Z","lastAt":"2007-11-01T14:20:51Z","messageCount":6,"participants":["Bill Lear","Mike Hommey","Alex Riesen"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"57813","messageId":"18217.52425.655322.52338@lisa.zopyra.com","threadId":"10558","inReplyTo":null,"subject":"Question on git-filter-branch","fromName":"Bill Lear","fromEmail":"rael@zopyra.com","sentAt":"2007-11-01T12:55:37Z","receivedAt":"2007-11-01T12:55:37Z","isPatch":false,"sender":{"key":"rael@zopyra.com","avatar":"https://gravatar.com/avatar/c4f2d2790ca3828d3b4e7dfebabf61d2fe94fd82fa49cdac2a5295dd2d46a874?d=mp&s=160"},"body":"In my repo, I have sensitive files A, C, and a directory full of\nsensitive stuff I want to remove forever from the git repository.\n\n% ls\nA B C D sensitive_stuff\n\n% git --version\ngit version 1.5.3.5\n\n% git filter-branch --index-filter 'git update-index --remove A' HEAD\nRewrite 5dd7d5f2d7d3a5f43c242188ac96294628267673 (7/7)\nRef 'refs/heads/master' was rewritten\n\nThese refs were rewritten:\n% ls\nB  C  D  sensitive_stuff\n\n% git status\n# On branch master\nnothing to commit (working directory clean)\n\nOk, so I guess it has done what I wanted.  So, I try to remove the\nnext file that has sensitive information in it:\n\n% git filter-branch --index-filter 'git update-index --remove C' HEAD\nNamespace refs/original/ not empty\n\nAnd there I am stuck: what do I do now?\n\nI did also try this (on a fresh clone of the original repo):\n\n% git filter-branch --index-filter 'git update-index --remove A C sensitive_stuff/*' HEAD\nRewrite 5dd7d5f2d7d3a5f43c242188ac96294628267673 (7/7)\nRef 'refs/heads/master' was rewritten\n\nThese refs were rewritten:\n% ls\nB  D  sensitive_stuff/\n% ls sensitive_stuff\nE  F  G\n\nSo, that appears to have removed A and C, but it did nothing to the\nfiles in the subdirectory.  Is there a way to remove the files in the\nsubdirectory --- or, better, to simply remove the entire subdirectory?\n\nI did try reading the man page for this, and the first example is\nessentially what I want.  It says \"you will get the rewritten history\nsaved in HEAD\", but I'm not sure what I'm supposed to do next.\n\n\nBill\n"},{"id":"57814","messageId":"20071101125845.GA27567@glandium.org","threadId":"10558","inReplyTo":"18217.52425.655322.52338@lisa.zopyra.com","subject":"Re: Question on git-filter-branch","fromName":"Mike Hommey","fromEmail":"mh@glandium.org","sentAt":"2007-11-01T12:58:45Z","receivedAt":"2007-11-01T12:58:45Z","isPatch":false,"sender":{"key":"mh@glandium.org","avatar":"https://avatars.githubusercontent.com/u/1038527?v=4"},"body":"On Thu, Nov 01, 2007 at 06:55:37AM -0600, Bill Lear wrote:\n> In my repo, I have sensitive files A, C, and a directory full of\n> sensitive stuff I want to remove forever from the git repository.\n> \n> % ls\n> A B C D sensitive_stuff\n> \n> % git --version\n> git version 1.5.3.5\n> \n> % git filter-branch --index-filter 'git update-index --remove A' HEAD\n> Rewrite 5dd7d5f2d7d3a5f43c242188ac96294628267673 (7/7)\n> Ref 'refs/heads/master' was rewritten\n> \n> These refs were rewritten:\n> % ls\n> B  C  D  sensitive_stuff\n> \n> % git status\n> # On branch master\n> nothing to commit (working directory clean)\n> \n> Ok, so I guess it has done what I wanted.  So, I try to remove the\n> next file that has sensitive information in it:\n> \n> % git filter-branch --index-filter 'git update-index --remove C' HEAD\n> Namespace refs/original/ not empty\n\nJust remove .git/refs/original/\n\nMike\n"},{"id":"57819","messageId":"18217.53833.710503.667761@lisa.zopyra.com","threadId":"10558","inReplyTo":"20071101125845.GA27567@glandium.org","subject":"Re: Question on git-filter-branch","fromName":"Bill Lear","fromEmail":"rael@zopyra.com","sentAt":"2007-11-01T13:19:05Z","receivedAt":"2007-11-01T13:19:05Z","isPatch":false,"sender":{"key":"rael@zopyra.com","avatar":"https://gravatar.com/avatar/c4f2d2790ca3828d3b4e7dfebabf61d2fe94fd82fa49cdac2a5295dd2d46a874?d=mp&s=160"},"body":"On Thursday, November 1, 2007 at 13:58:45 (+0100) Mike Hommey writes:\n>On Thu, Nov 01, 2007 at 06:55:37AM -0600, Bill Lear wrote:\n>> In my repo, I have sensitive files A, C, and a directory full of\n>> sensitive stuff I want to remove forever from the git repository.\n>> \n>> % ls\n>> A B C D sensitive_stuff\n>> \n>> % git --version\n>> git version 1.5.3.5\n>> \n>> % git filter-branch --index-filter 'git update-index --remove A' HEAD\n>> Rewrite 5dd7d5f2d7d3a5f43c242188ac96294628267673 (7/7)\n>> Ref 'refs/heads/master' was rewritten\n>> \n>> These refs were rewritten:\n>> % ls\n>> B  C  D  sensitive_stuff\n>> \n>> % git status\n>> # On branch master\n>> nothing to commit (working directory clean)\n>> \n>> Ok, so I guess it has done what I wanted.  So, I try to remove the\n>> next file that has sensitive information in it:\n>> \n>> % git filter-branch --index-filter 'git update-index --remove C' HEAD\n>> Namespace refs/original/ not empty\n>\n>Just remove .git/refs/original/\n\nOk, thanks.  But, how do I remove the subdirectory?\n\n% rm -rf .git/refs/original\n% git filter-branch --index-filter 'git update-index --remove sensitive_stuff' HEAD\nRewrite 6711f6a50605918326f67ca0c3402eab9a4c8571 (8/8)\nWARNING: Ref 'refs/heads/master' is unchanged\n\n% ls sensitive_stuff\nE  F  G\n% git filter-branch --index-filter 'git update-index --remove sensitive_stuff/*' HEAD\nRewrite 6711f6a50605918326f67ca0c3402eab9a4c8571 (8/8)\nWARNING: Ref 'refs/heads/master' is unchanged\n\n% ls sensitive_stuff\nE  F  G\n\n% cd sensitive_stuff\n% git filter-branch --index-filter 'git update-index --remove E F G' HEAD\nfatal: Not a git repository: '.git'\nYou need to run this command from the toplevel of the working tree.\n\n\nBill\n"},{"id":"57822","messageId":"20071101133440.GA17239@glandium.org","threadId":"10558","inReplyTo":"18217.53833.710503.667761@lisa.zopyra.com","subject":"Re: Question on git-filter-branch","fromName":"Mike Hommey","fromEmail":"mh@glandium.org","sentAt":"2007-11-01T13:34:41Z","receivedAt":"2007-11-01T13:34:41Z","isPatch":false,"sender":{"key":"mh@glandium.org","avatar":"https://avatars.githubusercontent.com/u/1038527?v=4"},"body":"On Thu, Nov 01, 2007 at 07:19:05AM -0600, Bill Lear wrote:\n> >Just remove .git/refs/original/\n> \n> Ok, thanks.  But, how do I remove the subdirectory?\n> \n> % rm -rf .git/refs/original\n> % git filter-branch --index-filter 'git update-index --remove sensitive_stuff' HEAD\n> Rewrite 6711f6a50605918326f67ca0c3402eab9a4c8571 (8/8)\n> WARNING: Ref 'refs/heads/master' is unchanged\n\ngit-update-index --remove will remove files, not trees, so you need to\nuse something like\ngit-ls-files ensitive_stuff | xargs -d \"\\n\" git-update-index --remove\ninstead.\n\nMike\n"},{"id":"57823","messageId":"18217.55984.327062.84306@lisa.zopyra.com","threadId":"10558","inReplyTo":"20071101133440.GA17239@glandium.org","subject":"Re: Question on git-filter-branch","fromName":"Bill Lear","fromEmail":"rael@zopyra.com","sentAt":"2007-11-01T13:54:56Z","receivedAt":"2007-11-01T13:54:56Z","isPatch":false,"sender":{"key":"rael@zopyra.com","avatar":"https://gravatar.com/avatar/c4f2d2790ca3828d3b4e7dfebabf61d2fe94fd82fa49cdac2a5295dd2d46a874?d=mp&s=160"},"body":"On Thursday, November 1, 2007 at 14:34:41 (+0100) Mike Hommey writes:\n>On Thu, Nov 01, 2007 at 07:19:05AM -0600, Bill Lear wrote:\n>> >Just remove .git/refs/original/\n>> \n>> Ok, thanks.  But, how do I remove the subdirectory?\n>> \n>> % rm -rf .git/refs/original\n>> % git filter-branch --index-filter 'git update-index --remove sensitive_stuff' HEAD\n>> Rewrite 6711f6a50605918326f67ca0c3402eab9a4c8571 (8/8)\n>> WARNING: Ref 'refs/heads/master' is unchanged\n>\n>git-update-index --remove will remove files, not trees, so you need to\n>use something like\n>git-ls-files ensitive_stuff | xargs -d \"\\n\" git-update-index --remove\n>instead.\n\nOh yeah, now we're cookin' with gas:\n\n% git filter-branch --index-filter 'git-ls-files sensitive_stuff | xargs -d \"\\n\" git-update-index --remove' HEAD\nRewrite 6711f6a50605918326f67ca0c3402eab9a4c8571 (8/8)\nRef 'refs/heads/master' was rewritten\n\nThese refs were rewritten:\nblake^master ~*/sensitive.clone ls\nB  D\n\nExcellent.\n\nThanks for the help.\n\n\nBill\n"},{"id":"57827","messageId":"20071101142051.GB14475@steel.home","threadId":"10558","inReplyTo":"20071101133440.GA17239@glandium.org","subject":"Re: Question on git-filter-branch","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2007-11-01T14:20:51Z","receivedAt":"2007-11-01T14:20:51Z","isPatch":false,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Mike Hommey, Thu, Nov 01, 2007 14:34:41 +0100:\n> On Thu, Nov 01, 2007 at 07:19:05AM -0600, Bill Lear wrote:\n> > >Just remove .git/refs/original/\n> > \n> > Ok, thanks.  But, how do I remove the subdirectory?\n> > \n> > % rm -rf .git/refs/original\n> > % git filter-branch --index-filter 'git update-index --remove sensitive_stuff' HEAD\n> > Rewrite 6711f6a50605918326f67ca0c3402eab9a4c8571 (8/8)\n> > WARNING: Ref 'refs/heads/master' is unchanged\n> \n> git-update-index --remove will remove files, not trees, so you need to\n> use something like\n> git-ls-files ensitive_stuff | xargs -d \"\\n\" git-update-index --remove\n> instead.\n\ngit ls-files -z sensitive_stuff | git update-index --remove -z --stdin\n"}]}