Sage 10 - understanding the workflow

Please note that besides the public/ folder, Sage themes also need the vendor/ folder (runtime) and the resources/ folder for the views. This also depends a bit on the Sage version. Sage 9 needs some other folders than Sage 10. In the end, it should be sufficient to add everything of the Sage theme to Git repository, except the files and folders in the .gitignore, which notably are vendor/ and node_modules/.
Why also ignore vendor/ when it was just stated that it is required by the theme during its runtime?
The idea is that during deployment, as using roots Trellis for example, composer install would run on the server and let the server pull the PHP package dependencies from the composer repositories (notably wpackagist.org and packagist.org).

When you don’t use roots Bedrock or Trellis, you can adjust the existing deployment flow, e.g. pull the composer dependencies on the workstation and then rsync them to server, or, if you really need/want to create a self-contained plugin ZIP (see Deployment on Shared Hosting).