How to recovery a corrupted git repo

4 messages, 3 authors, 2016-06-15 · open the first message on its own page

How to recovery a corrupted git repo

From: Ping Yin <hidden>
Date: 2016-06-15 22:50:37

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?

btw, "git remote add and then git fetch" doesn't work, it reports

error: refs/heads/bringup does not point to a valid object!
error: refs/heads/fsl_imx_r9.3 does not point to a valid object!
error: refs/heads/bringup does not point to a valid object!
error: refs/heads/fsl_imx_r9.3 does not point to a valid object!
error: refs/heads/bringup does not point to a valid object!
error: refs/heads/fsl_imx_r9.3 does not point to a valid object!
error: refs/heads/bringup does not point to a valid object!
error: refs/heads/fsl_imx_r9.3 does not point to a valid object!
error: missing object referenced by 'refs/tags/v2.6.32'
error: missing object referenced by 'refs/tags/v2.6.32-rc1'
error: missing object referenced by 'refs/tags/v2.6.32-rc2'

Re: How to recovery a corrupted git repo

From: Christian Couder <hidden>
Date: 2016-06-15 22:50:37

On Mon, Feb 21, 2011 at 8:50 AM, Ping Yin [off-list ref] 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?
Please, have a look this FAQ entry:

https://git.wiki.kernel.org/index.php/GitFaq#How_to_fix_a_broken_repository.3F

And tell us what you did according to it.

Thanks,
Christian.

Re: How to recovery a corrupted git repo

From: Axel Freyn <hidden>
Date: 2016-06-15 22:50:37

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 ;-)

Re: How to recovery a corrupted git repo

From: Ping Yin <hidden>
Date: 2016-06-15 22:50:37

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 [off-list ref] wrote:
Hi,
On Mon, Feb 21, 2011 at 03:50:09PM +0800, Ping Yin wrote:
quoted
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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help