git/list[1] front-page[2] threads[3] people[4] search[5] about
 

how to remove from history just *one* version of a file/dir?

From
Robert P. J. Day <rpjday@crashcourse.ca>
Date
Sep 14, 2017, 11:32 UTC
Message-ID
<alpine.LFD.2.21.1709140721130.19770@localhost.localdomain>
  [is this the right place to ask questions about git usage? or is
there a different forum where one can submit possibly embarrassingly
silly questions?]
  i've been perusing "git filter-branch", and i'm curious if i have
the right idea about how to very selectively get rid of some useless
history.
  say, early on, one commits a sizable directory of content, call it
/mydir. that directory sits there for a while until it becomes obvious
it's out of date and worthless and should never have been committed.
the obvious solution would seem to be:
  $ git filter-branch --tree-filter 'rm -rf /mydir' HEAD
correct?
  however, say one version of that directory was committed early on,
then later tossed for being useless with "git rm", and subsequently
replaced by newer content under exactly the same name. now i'd like to
go back and delete the history related to that early version of
/mydir, but not the second.
  obviously, i can't use the above command as it would delete both
versions. so it appears the solution would be a trivial application of
the "--commit-filter" option:
   git filter-branch --commit-filter '
     if [ "$GIT_COMMIT" = "<commit-id>" ] ; then
       skip_commit "$@";
     else
       git commit-tree "$@";
     fi' HEAD

where <commit-id> is the commit that introduced the first verrsion of /mydir. do i have that right? is there a simpler way to do this?

rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================
Next: Jeff King
Message 1 of 4 in “how to remove from history just *one* version of a file/dir?”
  1. Robert P. J. DaySep 14, 2017
  2. Jeff KingSep 14, 2017
  3. Robert P. J. DaySep 15, 2017
  4. Jeff KingSep 15, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.