Without checking Git User's Manual, I think the solution could go as
the following.
Assume that history looks like this
...---.---a---*---b---.---...
where by '*' is marked corruped commit (commit shich tree contains
corrupted blobs).
First, you can check the commit message for '*' using git-cat-file or
git-show, you can get the difference between 'a' and 'b' using
"git diff a b". When you know how repaired commit 'X' should look
like, do something like:
$ git checkout -b <temp-branch> 'a'
$ <edit edit edit>
$ git commit
Then history would look like this
...---.---a---*---b---.---...
\
\-X
Now with grafts make 'b' be a child of 'X', i.e. modify parent of 'b'
for history to look like below:
...---.---a---* b---.---...
\ /
\-X-/
Examine history using git-log, git-show, check tree with git-ls-tree
and examining files, use graphical history browser like gitk.
Then if possible use git-filter-branch to make history recorded in
grafts file permanent...
HTH
--
Jakub Narebski
Poland
ShadeHawk on #git
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html