Well, if you are using branches, it can't go live unless you do a PR to merge the branch back to master (assuming you are using master as the live branch).
The difficulty for me is not the project code but the installed nodes. Since all projects inherit the same installed nodes, projects have limited value for me. Especially if you wanted to, for example, test different versions of a node.
That is one of the reasons I don't use the default installation of Node-RED. I create a master folder and install Node-RED into that. I create a sub-folder to use as the userDir. I use npm scripts to make sure I don't have to remember lots of setup or how to start/stop things.
That way, I can have as many Node-RED installations as I like - I have to control the port of course - and I can have different versions of Node-RED, different Node-RED settings (projects on or off for example) and different nodes installed. And they can all run in parallel if I want them to.
Even backup and recovery is simple using this method (though bulky) as there is just one folder per configuration.