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

В Git изменения могут сохраняться и на новой ветке, и в основной ветке (обычно называемой "main" или "master") по нескольким причинам. Для более полного понимания этого процесса рассмотрим несколько ключевых концепций Git.

1. Комиты:
Git работает на основе записи изменений в виде комитов. Комиты представляют собой снимки состояния вашего проекта в определенный момент времени. Каждый комит содержит информацию о том, какие изменения были внесены, кем они были сделаны и каков был результат. Комиты формируют историю вашего проекта.

2. Ветки:
Ветки в Git позволяют вам работать над разными аспектами проекта независимо друг от друга. Создание новой ветки позволяет отделиться от основной ветки и вносить изменения, которые никак не повлияют на основную ветку. Все комиты, сделанные ветке, сохраняются только в этой ветке, пока вы явно не объедините их в другую ветку.

Теперь рассмотрим, почему изменения сохраняются и на новой ветке, и в основной ветке:

1. Переключение между ветками:
В Git вы можете переключаться между ветками с помощью команды git checkout. Когда вы переключаетесь на другую ветку, Git автоматически переносит все файлы и комиты, сделанные в этой ветке, в рабочий каталог. Это означает, что если вы внесли изменения в одной ветке и потом переключились на другую, ваши изменения также будут видны и в новой ветке.

2. Общий исторический корень:
Все ветки в Git имеют общий исторический корень - первый комит на основной ветке. Когда вы создаете новую ветку, она начинается с последнего комита на основной ветке. Это означает, что все комиты, сделанные на основной ветке до создания новой, будут также доступны и в новой ветке.

3. Слияние веток:
При слиянии двух веток Git объединяет изменения, сделанные в каждой ветке, и создает новый комит, который содержит комбинацию изменений из этих веток. Если вы изменили файлы в новой ветке и потом провели слияние с основной веткой, эти изменения будут включены в новый комит, созданный при слиянии. После слияния, изменения будут видны и в новой ветке, и в основной ветке.

Итак, изменения сохраняются и на новой ветке, и в основной ветке в Git из-за переключения между ветками, общего исторического корня и слияния веток. Этот механизм позволяет эффективно управлять изменениями и разделить работу над проектом на различные аспекты.