Вы должны думать git как дерево. Ветвь представляет собой независимую линию развития.
Итак, ветки фактически инкапсулируют ваши изменения. Например, если вы хотите добавить новую функцию в код, вы создаете новую ветвь, и pu sh фиксирует ее в новой ветке.
Работа с ветками делает главную ветку чистым и непроверенным кодом (сомнительно код может быть?). Это также затрудняет слияние нежелательного кода с основной веткой.