I have been using local logins for a while now but have ability to optionally login with Google or Discord. If I wanted to disable local logins and just have the external site logins, would that be possible? How would I migrate the existing users who use a non-google email etc.
As long as your users have the same email on the oauth provider and discourse, the accounts will be automatically associated upon their next login.
You will either need to provide instructions to your users on how to update their email either on discourse or oauth provider or otherwise you can resort to merging their accounts if the the userbase is small enough to justify manual merging.