Looks like repo keeps track of the repositories that it has init'ed. So if you created a repository independently of repo, and then add an entry for that existing repository to the repo manifest, repo sync will choke and present you with the message:
error.GitError: --force-sync not enabled; cannot overwrite a local work tree. If you're comfortable with the possibility of losing the work tree's git metadata, use `repo sync --force-sync mydirectory` to proceed.Turns out that "git metadata" means the whole .git directory inside mydirectory . So, any branch, any stash, anything in your existing local repository will be destroyed. No recourse to reflog, either!
Once you have run repo --force-sync, the repository will be accepted by repo on further repo sync calls.
An alternative to using --force-sync might have been to use --force-break (or simply -f), which just goes on when any directory fails to sync. But I didn't try, and I don't know how that would even make sense if we assume that repo doesn't go into a directory it didn't create.
It's not easy to find docs for repo online. Turns out that it includes its own documentation; try "repo help sync".
 When I stumbled upon this, I thought that "git metadata" would mean a git branch head or something like that; I assumed that repo would play inside the git repository that was already there! The mild language ("comfortable with the possibility") sounded like any consequence could be, well, mild. Alas, no. Was it so difficult to say "This will overwrite your .git directory" or something as clear as that? ... or maybe there are cases more nuanced than mine?