View the original community article here
Last tested: Oct 15, 2018
You are in dev mode, working on a branch dev-john-smith-wxyz in the local repo in the looker/models-user-123/project-foo directory.
When you commit, you commit to the local repo under looker/models-user-123/project-foo and also push your changes to the shared repo - github.com/my-company/project-foo - under the branch dev-john-smith-wxyz.
When you deploy to production, Looker first checks that all the commits in github.com/my-company/project-foo branch master are reflected in dev-john-smith-wxyx. If they are not, then you will need to pull changes and merge. Once that is done, you can deploy to production again. Looker will push dev-john-smith-wxyx to the master branch on github.com/my-company/project-foo. When that succeeds it will also then pull master from github.com/my-company/project-foo to the master branch in the local repo in looker/models/project-foo.
If you have pull requests set up, instead of deploying to production Looker will create a pull request against the master branch at github.com/my-company/project-foo. When that PR is accepted and merged into master, then github will issue a webhook to https://my-company.looker.com/webhooks/projects/project-foo/deploy. That will trigger Looker to pull the contents of master from github.com/my-company/project-foo to looker/models/project-foo.