I have read a few posts about this subject, but would welcome recent thoughts.
I am trying to develop a File Based Workflow for Drupal 8 using Git to push to origin, then pull to Dev and then Production.
I am using Drush CMI Tools to sync the config files, and hence the database.
Using Git with Drush I have no problem installing Modules or Themes, then export the config, commit and push. Then pull, import config, and clear the cache. Great. No problems.
I like Composer because it will import any dependencies eg. a library at the same time as installing the Module or Theme.
But using Git with Composer is a different story.
As an example, let's take the drupal/backup_migrate Module.
Git will only commit the folder modules/contrib/backup_migrate NOT the contents, so will not be pushed/pulled to Dev or Production. The only way round this that I can see is to delete the Git Repo in the modules/contrib/backup_migrate Folder, and then all is well.
I can see that using Composer is becoming 'Best Practice' and probably the only way in Drupal 9.
I cannot use Composer on my Production site, because it uses way more memory than I am allowed on my Hosting Server, hence the Git method above.
I look forward to hearing any views on the subject