There's no single way to do this, and as of late, my project structure has treated the Cordova project as build output, and not the actual project. (That is, the /project/ is one level above the Cordova project -- since I might want other outputs, like Electron, Web, etc.)
You will want to commit your project to your git repo, yes -- but you'll want to ignore certain files in your .gitignore:
*.swp # if using VI(M)
/node_modules # if using Node for any development purposes
/platforms # Cordova generated: unless you've made customizations here, these can be considered build artifacts
/plugins # Cordova generated: these can be considered build artifacts
If you're using the --save functionality when adding plugins and platforms, you should just be able to checkout your code and build your app as normal (assuming Cordova is installed). The missing platforms and plugins will automatically be fetched for you. If you haven't been using --save, you'll want to start. :-)
Note: If you're using a custom plugin, my suggestion is to put that in a Git Repo separate from your app, make it work with plugman, and then it's as easy to install as any other Cordova plugin.
Essentially, the only things that should make it to your repo is the config.xml file, your www directory, any icons/splashes (typically in res/), and any documentation.
Note: If you make changes in /platforms, this becomes a little more difficult. I don't do it, so I can ignore the entire directory.