Re: How to remove a commit object?
- From
Michael J Gruber <git@drmicha.warpmail.net>
- Date
- Sep 19, 2008, 09:16 UTC
- Message-ID
- <48D36DF4.3030607@drmicha.warpmail.net>
- In-Reply-To
- <D53D127D-97DD-417C-9109-ABD46BBD4E18@midwinter.com>
Steven Grimm venit, vidit, dixit 19.09.2008 01:41:
Show 35 quoted lines
> I maintain a shared repository a bunch of my coworkers push to for > code reviews. It has accumulated a lot of packfiles, so I want to > shrink it down a bit, but there's a problem: > > % git repack -A -d > Counting objects: ... > error: Could not read 125bf191b65189aaec7a6aa24ff26460d141d587 > fatal: bad tree object 125bf191b65189aaec7a6aa24ff26460d141d587 > > "git fsck" confirms that the tree object is missing: > > % git fsck > broken link from commit 1b2f0595bb4a6c2e17ca43a9cc41feec88c72a47 > to tree 125bf191b65189aaec7a6aa24ff26460d141d587 > ... > missing tree 125bf191b65189aaec7a6aa24ff26460d141d587 > > This is a dangling commit, but that's fine; for this particular > repository we actually *want* lots of dangling commits since they > represent the history of people's code review requests. (Hence me > running git-repack with -A instead of -a.) > > Given that it's dangling, it seems like it'd be safe to just remove > entirely (we lose that little bit of code-review history but we've > lost it already anyway with the tree object missing). But I'm not sure > how to do it. Is it possible to delete a commit object, and if so, how? > > I don't know how the corruption happened in the first place. There was > a short time at one point where the permissions on the object > directories were inconsistent, so it's possible someone pushed during > that period and managed to create the commit object file in .git/ > objects but didn't have permission to create the tree object. That's > just speculation on my part, though. This is the only corrupt object > in the repository according to git-fsck, so at this point I just want > to know how to get rid of it so I can do the repack.
git prune should delete dangling commits. Is that commit already in a pack? Then the -f option to repack may help.
Michael