Sorry, it’s really hard to follow what you are saying or asking
Here’s something that may be the source of your confusion. I thought I mentioned it, but didn’t: your git repo should be initialised under user, not at the site root. You won’t be changing anything outside user.
You might also ignore user/env but I like to commit that. You could also add ignores for any custom plugins.
The reason I don’t add Grav core files is because it’s not code that I am authoring and I don’t want to have to keep it up to date in the repository. It gets in the way. The only changes to it will be updates. Importantly, Grav is designed so that you never need to edit files outside user.
As for vendor and theme and plugin folders, they are typically excluded. I install and update them manually right now, but there is a way to automate it that I want to start doing. You can keep a manifest file in user (.dependencies I think). Then when you want to install a site’s external dependencies, run bin/grav install from Grav’s root. If I am not mistaken, that will download and install any plugins, themes, and their libraries. I keep a few personal forks of plugins, so the manifest makes using them much simpler. That’s because you can edit the plugin’s URL.