git-annex-proxy man page
git-annex-proxy — safely bypass direct mode guard
git annex proxy -- git cmd [options]
Only useful in a direct mode repository, this runs the specified git command with a temporary work tree, and updates the working tree to reflect any changes staged or committed by the git command.
For example, to revert the most recent change that was committed to the repository:
git annex proxy -- git revert HEAD
To check out a past version of the repository:
git annex proxy -- git checkout HEAD^^
To rename a directory:
git annex proxy -- git mv mydir newname
To commit the changes to a specific file, first use git annex add to stage the changes in the index, and then proxy a commit:
git annex add myfile
git annex proxy -- git commit myfile -m foo
The temporary work tree that the git command is run in is set up by checking out all files that are in the index, and copying (or hard linking) any unstaged files from the real work tree. Since the git command is run using this temporary work tree, it won't see eg, local modifications to files. So, it probably is not useful to proxy a command like "git add". However, you can use the proxy with any git command you like, as long as you think about how it will interact with the temporary work tree.
Joey Hess <firstname.lastname@example.org>