Só um detalhe, o branch não é exatamente uma cópia do código. Ele é apenas uma "ramificação", um "caminho alternativo" que o código tomou a partir de determinado ponto.
Mas o Git não cria uma cópia de nada, até porque ele não precisa. Para mais detalhes, recomendo esse artigo e esse outro (ambos são longos, mas esclarecedores, para entender porque o Git na verdade nem precisa copiar nada).