# Git Workflow

Here's the general Git workflow that you will run into:

1. Pull from origin main/master: `git pull origin main`
2. Create your own development branch: `git checkout -b <your branch name>`
3. Make your edits
4. Commit and push your changes to your branch:

```
git add <file changed> <file changed>
git commit -m "commit message"
git push --set-upstream origin <your branch name>
```

5. Open a pull request (PR) in the GitHub interface to merge into main:

Remember to **never commit and push directly to main**. The purpose of git is to create a way for many people to work on the same code at the same time without major conflicts.

We also would like to see a clean git history. This means:

* Rebase often: try to pull the latest changes from main as needed
* Make PRs for features and try not to run into conflicts
* Make commits linear if possible: ![](https://3246829168-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOBPUn06p2VQiK8dW3pV9%2Fuploads%2FyioAc8PQT1YYcTi6DXXV%2Fimage.png?alt=media\&token=dff6dc48-5b54-4003-af43-cb410044eb5e)

As a first assignment, please complete [git-practice-assignment](https://wiki.berkie.ee/techops/getting-started-projects/getting-started-with-techops-projects/git-practice-assignment "mention")
