We have our most up-to-date metadata source in Git. When we create the new scratch org and deploy our code, it deploys correctly and the profiles have the correct access to all of the objects. However, when we change a field or layout that affects a profile, and pull all the metadata from the new scratch org, it tells us that there is a bunch of metadata in the profiles that has been changed or deleted. But this isn't the case!
For example, the Admin.profile-meta class says that all the tab visibilities are deleted:
But when I go to Setup > Profiles to see if this is the case, I see all the tabs as DefaultOn.
We can even continue to deploy metadata in this org with these changes, and the Admin can still see on the tabs.
This is creating a real headache for us when committing to Git, because if we commit these weird changes, the next time that we open a scratch org, the Admin user won't have visibilities to these tabs. We then have to revert commits and fix the accidental addition of this weird metadata. Has anybody come across a similar issue? I am noticing that it doesn't happen so much with custom profiles, maybe we should just duplicate the Sys Admin profile and work with it instead?