Main Branch
  1. Hello
  2. world
  3. bye
  1. Hello
  2. world
  3. bye

This developer wants create a new branch.

This is the action to ‘Checkout’ the code.

My Copy
  1. Hello
  2. world
  3. bye

Remote is the branch in the central Repo.

Local is My Copy on my machine.

Working Directory
  1. Hello
  2. world
  3. bye
Staging
  1. Hello
  2. world
  3. bye
Local Repository
Saved version 1 Saved version 2 Saved version 3
Dave's Copy Branch My Copy
  1. Hello
  2. world
  3. bye
  1. Hello
  2. world
  3. bye
  1. Hello
  2. world
  3. bye
  1. Hello
  2. planet
  3. bye

Developers add their changes back to remote by performing a “Push”.

  1. Hey
  2. world
  3. bye
  1. Hey
  2. world
  3. bye
  1. Hey
  2. planet
  3. bye
  1. Hey
  2. planet
  3. bye

Developers get changes into their local copy by performing a “Pull”.

Main Branch
  1. Hello
  2. world
  3. bye
  1. Hey
  2. planet
  3. bye
  1. Hello
  2. world
  3. bye
  1. Hey
  2. planet
  3. bye
  1. Hey
  2. planet
  3. bye
Pull Request

To merge changes back into another branch, this should be done by performing a “Pull Request”.