Changing config.yml without committing to github

I was following this: Efficiently testing configuration file (migrating to 2.0)

My goal is to be able to edit the config.yml file without having to commit these changes to github. In the thread above, there seems to be a way to do this by using the command line to overwrite the config.yml with a local version of the config.yml. However, I am unable to get this to work. Circleci is reading from the correct local file (that has the config that I want), but the actual config.yml used for the build is wrong. The formatting is changed, and entire fields are missing.

For example, on my local config.yml, I have:

version: 2.1
orbs:
  cypress: cypress-io/cypress@1
executors:
  latest-chrome:
    docker:
      - image: "cypress/browsers:node14.7.0-chrome84"
workflows:
  build:
    jobs:
      - cypress/run:
          executor: latest-chrome
          browser: chrome

The actual config.yml that gets built looks like this:

version: 2.1
orbs: {cypress: cypress-io/cypress@1}
executors:
  latest-chrome:
    docker:
    - {image: 'cypress/browsers:node14.7.0-chrome84'}
workflows:
  version: 2
  build:
    jobs:
    - build: {}

Where are the curly braces coming from? Why does the line ‘version: 2’ get added to workflows? What happened to everything under build?