Thanks, axel and Christian. I am just look for a simpler method. since i have a full backup, finally , i do something like following git clone --bare --reference bad-repo.git foo.com:good-repo.git repo.git On Mon, Feb 21, 2011 at 6:04 PM, Axel Freyn <axel-freyn@xxxxxx> wrote: > Hi, > On Mon, Feb 21, 2011 at 03:50:09PM +0800, Ping Yin wrote: >> 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 ;-) > > -- > 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 > -- 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