Subject: Fixing a broken GIT repo

From: Bart van den Burg <[email-masked]>
Date: Fri, 18 Nov 2011 11:54:14 +0100

Hi

I somehow managed to break my GIT repo. Whenever I try to clone or fetch 
from a clean local repo, I get an error.

I'm able to go back on the server, to the very last commit where 
everything works, but as soon as I make a change locally and push it, it 
breaks again. I've been trying to figure out what's wrong here for about 
two days now, but I'm completely lost.

Here's the steps I take to reproduce the problem.

On the server, I can reset the ref to the last working commit:

git@server:~/shifter_rai.git$ echo 
"cc5693a275c25003edc77b59f5a5c603a857f711" > refs/heads/master

Then, on my local computer, I can clone fine, but after making a commit, 
it breaks again:

bbu@SIT-WST-05 /d/workspace9
$ git clone [email-masked]:/home/git/shifter_rai
Cloning into shifter_rai...
remote: Counting objects: 9557, done.
remote: Compressing objects: 100% (1887/1887), done.
remote: Total 9557 (delta 7107), reused 9397 (delta 7019)
Receiving objects: 100% (9557/9557), 2.85 MiB | 1.06 MiB/s, done.
Resolving deltas: 100% (7107/7107), done.

bbu@SIT-WST-05 /d/workspace9
$ cd shifter_rai/

bbu@SIT-WST-05 /d/workspace9/shifter_rai (master)
$ echo "test" > test

bbu@SIT-WST-05 /d/workspace9/shifter_rai (master)
$ git add test
warning: LF will be replaced by CRLF in test.
The file will have its original line endings in your working directory.

bbu@SIT-WST-05 /d/workspace9/shifter_rai (master)
$ git commit
[master 85d1ee9] test
warning: LF will be replaced by CRLF in test.
The file will have its original line endings in your working directory.
  1 files changed, 1 insertions(+), 0 deletions(-)
  create mode 100644 test

bbu@SIT-WST-05 /d/workspace9/shifter_rai (master)
$ git push
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 271 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To [email-masked]:/home/git/shifter_rai
    cc5693a..85d1ee9  master -> master

bbu@SIT-WST-05 /d/workspace9/shifter_rai (master)
$ cd ..

bbu@SIT-WST-05 /d/workspace9
$ rm -rf shifter_rai/

bbu@SIT-WST-05 /d/workspace9
$ git clone [email-masked]:/home/git/shifter_rai
Cloning into shifter_rai...
remote: Counting objects: 9557, done.
remote: Compressing objects: 100% (1887/1887), done.
remote: Total 9557 (delta 7107), reused 9397 (delta 7019)
Receiving objects: 100% (9557/9557), 2.85 MiB | 1.16 MiB/s, done.
Resolving deltas: 100% (7107/7107), done.
error: refs/remotes/origin/master does not point to a valid object!
error: Trying to write ref refs/heads/master with nonexistant object 
85d1ee957c65485ed9c937a4f1bfdd44fda4ea35
fatal: Cannot update the ref 'HEAD'.

Needless to say, the mentioned object in fact does exist on the server:
git@server:~/shifter_rai.git$ ls -la 
objects/85/d1ee957c65485ed9c937a4f1bfdd44fda4ea35
-r--r--r-- 1 git git 153 Nov 18 11:39 
objects/85/d1ee957c65485ed9c937a4f1bfdd44fda4ea35

Can anyone tell me what is happening here, and how I can fix it?