having never used "git filter-branch" in any meaningful way, a
couple questions about some situations that don't seem to be explained
in the docs very well.
so, the standard example everyone uses is to go back through a git
repo and remove something completely from the history. let's say it
was the top-level /README file:
$ git filter-branch --tree-filter "rm /README" @
and i guess i could add the "--prune-empty" option that will take out
the commit that added that file in the first place (if such a commit
existed). any comments on that trivial example?
now let's make it more complicated. say i added that file to the
repo early on, it was there for a while, then i "git rm"ed it because
it was garbage, and some time later, i re-introduced that /README file
(possibly with different content, possibly not). i might still want to
restructure my repo to look like that *earlier* version of the
/README file never existed, but i suspect i can't just do this
anymore:
$ git filter-branch --tree-filter "rm /README" @
if i read the docs correctly, this will remove *all* incarnations of
that top-level file from the history, is that correct?
at that point, it seems like i would use some form of:
$ git filter-branch --commit-filter '...'
where my commit filter would reflect the single commit that added that
earlier version of the file, and nothing more. does that sound
reasonable?
i will now continue poring over the docs, and if anyone wants to
provide a link to a really good tutorial on git filter-branch apart
from the standard docs, feel free.
rday
--
========================================================================
Robert P. J. Day Ottawa, Ontario, CANADA
http://crashcourse.ca
Twitter: http://twitter.com/rpjday
LinkedIn: http://ca.linkedin.com/in/rpjday
========================================================================