I think the golden rule here is to only work directly with the repo on a single device. Otherwise there is a lot of useless churn and more potential for conflicts.
If you want to work with it on multiple devices, you can still sync it around, just work with a new clone of that repo rather than modifying it directly from multiple places. Then push your changes into the synced repo and act like it's really remote instead of local.
This does use more storage, however.
I do have to say, I've never understood why git doesn't work well with cloud drives. File management seems like a straightforward enough set of operations that ought to be bulletproof. I've never understood what precise operation gets corrupted when using git, and how that's possible at all.
And I don't know if the fault is the cloud or git. Is it that the cloud returns errors 0.5% of the time, and git silently ignores those instead of retrying, and corrupts data? Or is it something about git reading and writing so many files so quickly that operations on the cloud drive somehow get lost or out of order but without generating errors? Both seem equally implausible, and yet...
My problem is, that I need to use iCloud Drive for some important files because the app I need to use doesn't support another way to sync.
Without git I wouldn't have figured out which files have changed. (And even with git, I can't be sure that I caught everything. I guess git content can also be altered by iCloud sync conflicts…)
Or maybe even locally if you don't need to commit on other computers, then you'll be certain that git is correct without any cloud intervention
My problem is, that for the time being, some of my files needs to be on iCloud Drive because I rely on one app to edit/create them. Everything else I moved out of iCloud Drive.
I most definitely used Git with binary data without any issues. It makes no assumptions as far as I can tell. It's just not great with very large binaries.
I think you cannot make a completely generic indifferent system in finite time. Maybe your system is optimized to efficiently work with 5 1TB files, or 1 million 5KB files, or just nicely handles a reasonable amount of text files in a neat way while being not extremely complex or hard to maintain & deploy.
If Git does version control better than other control systems but only does it for text then I might be fine with that, I think it's reasonable to have a scope.