объясни branch --простыми-словами

Ветка
Представь киношную линию "а что, если". Герой открывает боковую вселенную, проживает там безумную версию событий, а реальный мир все это время спокойно крутится дальше и остается нетронутым. Это и есть ветка.
У тебя есть рабочая версия проекта. Она запускается, она в проде, люди ей пользуются. Теперь ты хочешь попробовать что-то рискованное. Перетряхнуть оформление заказа, переделать главную, что угодно. Страшна не сама идея. Страшно, что идея может взорвать то, что уже работает.
Поэтому ты не трогаешь рабочую штуку. Ты отделяешь копию.
Эта копия и есть ветка: полный клон всего проекта, отведенный в сторону, где можно экспериментировать хоть совсем без тормозов. Реальная версия остается замороженной и в безопасности, пока ты играешь. У реальной версии почти всегда есть имя, и это имя — main. (В старых проектах еще встретишь "master". То же самое.) Main — это реальность. Ветка — твоя песочница.
Как это работает простыми шагами
- Ты на main, рабочей версии.
- Ты создаешь от нее ветку. Теперь у тебя есть идентичная копия со своим именем.
- Ты отрываешься в ветке. Ломаешь, чинишь, пробуешь дурацкую идею.
- Main не сдвинулся ни на сантиметр. Он все еще спокойно работает, будто ничего не произошло.
Ветки называют по тому, что в них делают. Ветка для добавления одной фичи называется feature branch, и люди называют ее по задаче, чтобы история читалась обычным языком:
- add-checkout-button живет в одной ветке
- fix-coupon-bug живет в другой
- redesign-homepage живет в третьей
Три рискованных эксперимента, три отдельные вселенные, и ни одна не может задеть ни другую, ни main.
Потом приходит вердикт. Когда работа в ветке закончена, ты ее протестировал и она правда работает, ты мержишь ее обратно в main. Merge значит "сложить этот эксперимент обратно в реальность". Изменение перестает быть побочным квестом и становится частью настоящей живой штуки, которой все пользуются.
А если эксперимент оказался катастрофой? Удаляешь ветку и уходишь насвистывая. Main даже не узнал, что она существовала. Никакой уборки, никакого "отменить ущерб", никаких шрамов. Вся параллельная вселенная просто испаряется. Вот почему ветки ощущаются как суперсила: худший возможный исход — "выбросить ветку", а не "я сломал живой сайт".
Так же целая команда работает над одним проектом и не врезается друг в друга. Каждый работает в своей ветке, в своей вселенной, и складывает свой кусок обратно в main, когда он готов. Никто не редактирует один и тот же живой файл одновременно и не наступает другим на ноги.
Теперь одно слово, которое ты услышишь и из-за которого не надо паниковать: conflict. Иногда два человека (или две ветки) меняют одну и ту же строку, и когда ты пытаешься смержить, Git не может решить, чья версия должна победить. Поэтому он останавливается и спрашивает тебя. Это merge conflict. Звучит как сирена, но на деле Git просто вежлив:
"Вы оба изменили эту строку. Какую оставляем?"
Ты выбираешь, сохраняешь, идешь дальше. Вот и вся драма.
Есть еще более формальный способ вернуть ветку обратно, особенно если кто-то должен сначала посмотреть работу. Он называется pull request, и скоро у него будет свой день.
Экспериментируй в ветке. Держи main в безопасности.