I encountered the same issue and was able to resolve it by using the following command
shopify theme pull --nodelete
That ensures that no local files are squashed in the sync.
Additionally, I recommend creating a .shopifyignore file where you can include all of your non-theme files such as package.json, package-lock, node_modules dir, webpack.config.js etc. The CLI will ignore these files when pushing/pulling which speeds up the actions and avoids problems like the one you're describing.
Hope that helps,
I haven't worked with shopify cli yet but I'm keen to get into soon ever since I saw the recent hot reloading updates for liquid. What do you think about using the dist folder for doing theme pull? If a pull gets the uploaded dist to shopify, would it make sense to pull it into that folder rather than the root of you local setup?