I can share some methods used at my company. We need versioning for audits as well, which means we don't use previous versions during development.
1. Bundles. You can use bundles as version markers. You can switch back and forth between bundle-versions, or download and import the bundle as a separate copy of the project. You can create bundles programmatically, allowing you to automatically create a bundle as part of a scenario.
2. Project exports. These can be created programmatically as well, and you can store the zip in a managed folder in your flow.
Another option would be to use Git as mentioned in the original post. We still need to set up our remote, and once that happens we will look into using the repositories for versioning. It would be great if we can tag commits, but that looks to be difficult because Dataiku creates commits automatically.