Currently, if I do some work on an experimental branch, creating some annexed files, then abandon the branch, information about keys created on the experimental branch will remain in the git-annex branch. This breaks git's normal notion of lightweight branching, where you can work on an experimental branch and, if you later decide to abandon that work, it'll be as if the experimental branch never existed. Maybe, it would make sense to have, for each branch mybranch, a corresponding branch git-annex-b/mybranch , which would hold the state of the git-annex branch reflecting work on mybranch? Then, if you decide to merge mybranch into master, git-annex-b/mybranch would get union-merged into the git-annex branch (or into git-annex-b/master). But if you decide to abandon/delete mybranch, git-annex-b/mybranch can be abandoned/deleted with no trace left in the main git-annex branch.