# GitHub ## Repositories 1. First [create](https://github.com/orgs/affinehealth/repositories) a repository on Github: use `New repositroy` button - choose a repository name - choose `public/private` - choose a `.gitignore` template (scala, nodejs, etc.) - choose a `license` (optional - can always add later) 2. `clone` the repository locally (SSH) - `git clone git@github.com:affinehealth/my-repo-name.git` 3. `ALWAYS` branch from `main` branch (source of truth) - `git checkout main` - pull latest: `git pull` - `git checkout -b [issue-number]-ticket-title` - Ex: `git checkout -b 4-add-github-workflows` *use the ticket number and title helps to **track** **work** and **branches*** 4. When ready to push to GitHub for a PR, do: - `merge origin/main` this will make sure you have the latest code base from main. *Note: this may lead to conflicts wich will need resolving (check cli)* 5. `Push` to Github - first time push: `git push --set-upstream origin new_branch` - subsequent push: `git push` 6. on the repositories page there will be a banner recommending that you create a PR. - Create a PR and edit the template description - Set the `closes: #ticket-number`. *Github will close the ticket for you when the PR is merged* - make sure to **always** select `squash and merge` on the PR. It combines your commits into one large commit prior to merging into `main`. 7. Repeate 3-6 (continued work) **Always** branch from `main` and use a **PR** on GitHub to `squash and merge` changes back to `main`