I find it much easier to use direnv and set GIT_AUTHOR_EMAIL in each of ~/work/.envrc and ~/personal/.envrc No need to reconfigure every repo this way.
On ~/.gitconfig
[user]
name = personal
email = personal@example.com
[includeIF "gitdir:~/workspace/"]
path = ~/work.gitconfig
Then on ~/work.gitconfig [user]
name = workname
email = work@example.com
[1] https://git-scm.com/docs/git-config#_conditional_includesIf you don't use this in any nested envrc files, the settings don't carry over which means your git settings are not maintained. It is kind of an escape hatch as the parent files are not verified in the same way normal envrc files are, but I have found the trade off to be worth it