Почему изменения сохраняются и на новой ветке и в main?

В программировании и системе контроля версий Git возникает интересный вопрос: почему изменения сохраняются и на новой ветке, и в главной ветке сразу после создания новой ветки? Для понимания этого феномена необходимо разобраться в основных принципах работы Git и его системе ветвления.

Одной из ключевых особенностей Git является его децентрализованная структура. Каждая ветка в Git — это отдельное пространство имен, в котором можно вносить изменения независимо от других веток. В момент создания новой ветки, Git создает копию всего сохраненного состояния проекта с главной ветки (обычно называется «main») и переключает рабочую область на новую ветку.

Однако, фактические изменения в проекте сохраняются в специальной структуре данных Git, называемой «коммитом». Каждый коммит представляет собой некую точку в истории изменений проекта. При создании новой ветки, коммиты с главной ветки копируются на новую ветку, но физические изменения в файлах не дублируются. Это позволяет Git быть эффективным и экономичным по использованию памяти.

Таким образом, изменения, сделанные на одной ветке, отражаются на других ветках, потому что они являются общими для проекта в целом.