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

Re: How to recovery a corrupted git repo

From
AFAxel Freyn <axel-freyn@gmx.de>
Date
Feb 21, 2011, 10:04 UTC
Message-ID
<20110221100454.GM22168@axel>
In-Reply-To
<AANLkTi=W3RckA=e-YwDJzELaEOAa+7P74V-G0G=bQhex@mail.gmail.com>

Hi, On Mon, Feb 21, 2011 at 03:50:09PM +0800, Ping Yin wrote:

Show 13 quoted lines
> I have a corrupted git repo, with "git fsck", it shows
> 
> missing blob b71eb55f2dbc97dafd4a769fc61f346e69a5e0af
> missing blob 282035f3ae964e1e288f352c370be8edd11d3078
> missing tree 3c20f556eecc476e3542cc522d46a62a4461fec6
> missing blob f321b578edeb452358497e832815d6cae6b36886
> missing commit 6d23f5084c975be637f7d748db82116bf84d3872
> 
> And i also have a good backup repo. How can i recover the corrupted
> repo with the backup repo?
> 
> I can do a rsync or fresh "git clone", however, is there any git
> related commands to incrementally do this?
I don't know whether there is a single git command to do it, but you can
copy those 5 objects "by hand": in your backup, you should have a
directory .git/objects, where you have the files
   b7/1eb55f2dbc97dafd4a769fc61f346e69a5e0af
   28/2035f3ae964e1e288f352c370be8edd11d3078
   3c/20f556eecc476e3542cc522d46a62a4461fec6
   f3/21b578edeb452358497e832815d6cae6b36886
   6d/23f5084c975be637f7d748db82116bf84d3872

It should be sufficient to just copy those files into the corrupted repo.

However if you packed the git-files in the backup (e.g. by running "git gc"), those objects might be found in a pack in .git/objects/pack. The easiest ist probably to use git-unpack-objects to unpack the objects, and then copy the 5 missing objects.

Axel
PS: Well, I'm using git and I like it -- but I'm no specialist; so first
do a backup, before you follow my proposal ;-)
Previous: Christian CouderNext: Ping Yin
Message 3 of 8 in “How to recovery a corrupted git repo”
  1. Ping YinFeb 21, 2011
  2. Christian CouderFeb 21, 2011
  3. Axel FreynFeb 21, 2011
  4. Ping YinFeb 21, 2011
  5. Matthieu MoyFeb 21, 2011
  6. Ping YinFeb 21, 2011
  7. Matthieu MoyFeb 21, 2011
  8. Ping YinFeb 22, 2011

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.