 Use this dual development scheme for your own repositories!
## Branches
A **version** of the code (i.e., a **branch**) is made up of a sequence of code changes.
These individual code changes are called **commits**.
For instance, the `master` and `develop` branches can be represented as a timeline:

## Switch between branches
List all branches of the repository with
```bash
$ git branch -a
```
Exit by typing `q`. The branch with the ***** is the current branch.
Checkout another branch
```bash
$ git checkout branchName
```
You can switch to the `develop` branch with
```bash
$ git checkout develop
```

## Create your own version
Assume that you want to work on a function for adding 2 numbers.
Create a new **branch**!
```bash
$ git checkout -b add-2-numbers
```
The `-b` flag creates the branch.
Locally, you have your own version now:

Push your version to your fork:
```bash
$ git push origin add-2-numbers
```