If you need multiple Node-Red projects from the same computer, the easiest way is to avoid the default installation method and use "embedded" mode installation. This follows the standard pattern for node.js and NR simply becomes another module to be installed.
Then you can follow your usual node.js development practices. Commit the package.json & the startup js file. In the startup you will have the NR config (unless you offload it to an included file) and you should change the default user folder from ~/.nodered to something more useful, I generally use ./.nodered (so under the project folder).
Obviously you need to also commit your flows file as a minimum but note that it may well contain private data so be careful if committing to a public repository like GitHub. Also commit the configuration nodes file if you want all members of the team to share one set.
When working in embedded mode, you actually have two ways of installing other nodes. You can add them to the main project package.json or you can npm init in the user folder and install modules there. I generally use the former as I think it is simpler.
Unfortunately, I don;t think there is an easy way to merge flows changes from multiple people. Although the flows file is JSON, it changes even for tiny things such as moving a node slightly. So it isn't easy to have multiple devs working on a single set of flows.
Exporting of nodes is generally done manually from the admin UI, not sure if there is an API method. It would certainly be nice if there were an easier and automatable way of exporting/importing a selection of nodes. You could save exported nodes to a JSON file as they are always valid JSON (I think).