Preventing accidental production deployments
The best practice is to separate production and staging(testing) inventory.  See Staging vs Production.


  This way you pick with -i what you are targeting.


To make it more robust you might want to clone a separate structure for production and restrict access to it. Pull from staging before deploying to production.

In detail, this would mean to 1) put the directories into git, 2) make sure staging is committed, pushed and merged, and 3) then pull to the production and deploy. The workflow is up to you.