On Tue, Jun 10, 2008 at 13:55, Jakub Narebski <jnareb@xxxxxxxxx> wrote: > 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 > Thanks for the help. My situation was: ...---a---*---b---c---d---*---e---... Following your example, I believe I got this to: ...---a---* b---c---d---* e---... \ / \ / \-X-/ \---/ That is, I replaced the first problematic commit and deleted the second, since I forgot how I changed 'd' to get that commit. I put the following in .git/info/grafts: 'b' X 'e' 'd' (which I gathered from here: http://thread.gmane.org/gmane.comp.version-control.git/66398/focus=66402. I've never use grafts before. A bit about them should be put in the manual, if it's not there already. =]) Then I ran: git-filter-branch HEAD ^X ^'d' Now "git log --raw --all" doesn't show any of the problematic SHA-1 hashes anymore! However: identity.fb[173] > git fsck --full error: 320bd6e82267b71dd2ca7043ea3f61dbbca16109: object corrupt or missing error: 4d0be2816d5eea5ae2b40990235e2225c1715927: object corrupt or missing missing blob 320bd6e82267b71dd2ca7043ea3f61dbbca16109 missing blob 4d0be2816d5eea5ae2b40990235e2225c1715927 Shouldn't these be unreferenced now that I've run filter-branch? -- Denis -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html