Behind the scene: git branch

One of the strength of git is the way it handles branches.

Let’s start with 1 commit on master.

and let’s create a branch named feature-1:

$ git branch feature-1

Git is very fast at creating branches because it is only about creating a pointer:

HEAD is a symbolic ref to the branch your working tree is on and is still pointing to master.

If we switch to our new branch, git simply changes the HEAD reference

$ git checkout feature-1
Switched to branch 'feature-1'

If we create a file while on that branch and commit it, we then have:

If we switch to master:

$ git checkout master
Switched to branch 'master'

The HEAD reference is switched again, and our working directories is updated accordingly.

As expected, if we create a new commit on master, we land on that configuration: