From 4c0bda0f4444bd1bf0b1917e318a84cf09636648 Mon Sep 17 00:00:00 2001 From: "http://id.clacke.se/" Date: Mon, 11 Nov 2013 05:35:43 +0000 Subject: [PATCH] --- ...ecovering_from_a_corrupt_git_repository.mdwn | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 doc/tips/recovering_from_a_corrupt_git_repository.mdwn diff --git a/doc/tips/recovering_from_a_corrupt_git_repository.mdwn b/doc/tips/recovering_from_a_corrupt_git_repository.mdwn new file mode 100644 index 0000000000..084f76852e --- /dev/null +++ b/doc/tips/recovering_from_a_corrupt_git_repository.mdwn @@ -0,0 +1,17 @@ +I have found this the most reliable way to recover from a corrupt git repository. I have had a lot of them lately, there might be a regression in btrfs in Ubuntu's Linux 3.8.0-33 (!). + +1. Create a clone of a known good repository. +2. Add the clone as an object alternate to the broken repository. +3. Do a `git-repack -a -d` to lift the external objects into repo-local packs. +4. Remove the clone + +[[!format sh """ +$ cd /tmp/ +$ git clone good-host:/path/to/good-repo +$ cd /home/user/broken-repo +$ echo /tmp/good-repo/.git/objects/ > .git/objects/info/alternates +$ git repack -a -d +$ rm -rf /tmp/good-repo +"""]] + +... and push early, push often. ;-)