git‐annex‐repair − recover broken git repository

git annex repair

This can repair many of the problems with git repositories
that git fsck detects, but does not itself fix. It’s useful
if a repository has become badly damaged. One way this can
happen is if a repository used by git‐annex is on a
removable drive that gets unplugged at the wrong time.

     This command can actually be used inside git
repositories that do not use git‐annex at all; when used in
a repository using git‐annex, it does additional repairs of
the git‐annex branch.

     It works by deleting any corrupt objects from the git
repository, and retrieving all missing objects it can from
the remotes of the repository.

     If that is not sufficient to fully recover the
repository, it can also reset branches back to commits
before the corruption happened, delete branches that are no
longer available due to the lost data, and remove any
missing files from the index. It will only do this if run
with the −−force option, since that rewrites history and
throws out missing data.  Note that the −−force option never
touches tags, even if they are no longer usable due to
missing data.

     After running this command, you will probably want to
run git fsck to verify it fixed the repository. Note that
fsck may still complain about objects referenced by the
reflog, or the stash, if they were unable to be recovered.
This command does not try to clean up either the reflog or
the stash.

     It is also a good idea to run git annex fsck −−fast
after this command, to make sure that the git‐annex branch
reflects reality.


     Enable repair actions that involve deleting data that
     has been lost due to git repository corruption.




Joey Hess <>