A way or plugin to use multiple versions of my site?

Is there a way that I can have my site that is live right now stay live while I work on things across the whole site? And then when I want it all to go live I make the whole new version of the site go live?