Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I recover my Git repository for a "missing tree" error?

Tags:

git

gerrit

We are using Gerrit for our Git repository. On a project that has been active for several months, we are suddenly unable to push any changes. When we execute git push we see the following error:

error: unpack failed: error Missing tree 14d62f0ed4385e3f68f226ac133fa9932a9c65c9

Executing git fsck --full yields:

dangling tree 2701c92fb6eab1826482f6bcc9598413e651a92a   dangling blob c505b3b12cfacd1e26dec8dc559820a30fc20c27   dangling blob 8907f94b5b4ec881e1b86d50681795e368c167ff   dangling blob 4938d9fc34c6e2f92c68872bfec6e070b2b3a9c2   dangling blob 8a5c8b8d35484ea1470e2d8e6c482fcb97b23d0f   dangling commit 3072d3314e20bf6c6998e1c02986d83019d3e1df   dangling tree 5377d7f7111d340854c3ee0946667c202227e603   dangling tree c3783e9ab540457924ceb9f9fb5ea1c2b97472b1   dangling blob 8b92d1765038e4ec5e721f98a2aabb305a7f9819   dangling tree 38a03153f0f18ca15846e9bd4983a86800a43a94   dangling commit 8db2d6ae5364174bebe13720a359ddb2e62d4c9d   

All of our developers are experiencing the same error when they try to push. So far, we've tried re-initializing the gerrit repo (git init --bare ...) and pushing up to it. We've also tried creating a new gerrit project with a separate repo. In the end, we keep getting the same error.

Does anyone have any insight on what the cause would be, or how to recover?

like image 340
Justin Guertin Avatar asked Aug 29 '11 22:08

Justin Guertin


People also ask

What is git error?

This means that someone else pushed a commit to the same branch you're pushing to, but you don't have that commit on your laptop yet. This can happen if it has been awhile since you ran "git pull" on a branch that many people contribute to, such as staging. To fix this issue, run: git pull origin <your-branch>


1 Answers

Use git push --no-thin instead of git push.

From Git docs:

A thin transfer significantly reduces the amount of sent data when the sender and receiver share many of the same objects in common. The default is --thin.

like image 142
Filip Avatar answered Sep 23 '22 14:09

Filip