JavaRush /Курсы /Модуль 1: Python Core /Работаем с git-ветками в PyCharm

Работаем с git-ветками в PyCharm

Модуль 1: Python Core
7 уровень , 10 лекция
Открыта

11.1 Ветки в гите

Работа с ветками branches в Git — это один из ключевых аспектов управления версиями, который позволяет параллельно вести несколько линий разработки в одном репозитории. Ветвление делает Git мощным инструментом для коллаборации, экспериментов и управления различными версиями проекта.

Вы можете рассматривать ветки в Git как папки, куда Git копирует ваш проект. У вас есть основная папка вашего проекта в вашем локальном репозиторииmain. Git может создать копии этой папки, чтобы вы могли экспериментировать, не рискуя повредить основной, хорошо работающий код. Такие папки-копии называют веткамиbranches.

Ветки — это альтернативные варианты кода. Предположим, что вы хотите что-то переделать в большом проекте или провести эксперимент, в котором вы не полностью уверены. Как бы вы поступили без Git?

Можно было бы скопировать проект в новую папку и попробовать в ней все поменять. Если результат вам понравится, то можно скопировать его в основную папку. Если не понравится — забыть о ней, ну или вообще удалить.

Давайте рассмотрим пример из жизни, например, написание книги:

  1. У вас есть рукопись книги (основная ветка).
  2. Вы решаете попробовать изменить концовку (создание новой ветки).
  3. Вы пишете новую концовку в отдельном документе (работа в новой ветке).
  4. Если новая концовка окажется лучше, вы замените старую в рукописи (слияние веток).
  5. Удаляете документ с новой концовкой (удаление ветки).

11.2 Создание веток

Создать ветку в PyCharm очень просто.

Введите имя ветки.

PyCharm сразу же отобразит имя вашей текущей ветки сверху в меню:

Что было до этого?

Ранее отображалось название вашей первой и основной ветки — main.

Теперь отображается test, что означает, что Git (под руководством PyCharm) не только создал новую ветку, но и сразу переключился на неё.

Добавим какой-нибудь код в файл main.py текущей ветки test и закомитим его.

11.3 Переключение между ветками

Шаг 1. Выбираем ветку.

Теперь давайте переключимся на нашу старую ветку. Кликните по верхнему меню, и что мы там видим?

Не путайтесь — всё очень просто:

Local — это список веток вашего локального git-репозитория; тут их две:

  • test
  • main

Remote — это ваш удалённый репозиторий, который находится на сервере GitHub. Мы туда отправили ваши изменения, но новой ветки там нет, что логично. Удалённый репозиторий носит имя origin, и в нём есть только ветка main.

Recent — это список имен последних веток, с которыми вы работали. Этот пункт добавлен в PyCharm для удобства и скорости.

Название origin/main справа от имени локального репозитория — это имя удалённого репозитория, с которым он сейчас синхронизирован, и куда будут отправляться изменения.

Шаг 2. — Выгружаем код ветки в текущую папку.

Шаг 3. Проверяем:.

У меня отображается ветка main и старый код.

11.4 Слияние веток

Давайте теперь попробуем объединить код из наших двух веток.

Шаг 1. Для начала добавим в наш проект еще один файл — init.py и напишем в нем какой-то код.

  • Создаем файл init.py
  • Пишем в нем код print("Hello repo")
  • Коммитим файл.

Вот как выглядят два моих файла в ветке main:

Шаг 2. Слияние веток.

Вольем в нашу текущую ветку main изменения, которые были сделаны в ветке test.

Для этого также воспользуемся верхним меню и командой Merge ‘test’ into ‘main’.

Шаг 3. Проверяем результат:.

Проверяем:

  • Сверху по-прежнему отображается ветка main
  • У нас есть два файла: init.py и main.py
  • Файл main.py содержит код, который был добавлен в ветке test.

11.5 Конфликты при слиянии

Иногда при слиянии веток возникают конфликты.

Если вы внесете изменения в один файл в разных ветках и попробуете их объединить, то может возникнуть конфликт.

Конфликт текстовых файлов

Git — это очень умная система, она понимает типы файлов. Если вы внесете изменения в разные места файлов, которые она считает текстовыми, то она просто перенесет изменения из одного файла в другой в нужное место, как бы это сделал человек.

Конфликт бинарных файлов

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

Ручное разрешение конфликтов:

Если вы внесете изменения в одно и то же место текстового файла, Git не сможет правильно объединить разные версии и предложит это сделать вам.

Вот как это может выглядеть:

Что вы тут видите:

  • Слева содержимое файла main.py ветки main
  • Справа содержимое файла main.py ветки test
  • В середине PyCharm предлагает вам написать финальную версию кода (можно кликнуть по кнопкам >> и <<, чтобы автоматически вставить изменения из одного из файлов).

Я принял вариант main и дописал код вручную. Вот что у меня получилось.

11.6 История изменений

Ещё из полезного и интересного: вы можете посмотреть историю изменений любого файла, кликнув по кнопке Show History. Есть два места, где она может находиться — найдите её.

Вот как выглядит история изменений у меня для файла main.py:

Пояснения:

  • Слева вы видите историю изменений конкретного файла:
    • Чем изменение новее, тем оно выше; чем старее — тем ниже.
    • Здесь также отображается история слияния веток.
  • Справа — изменения, которые были внесены в конкретном коммите.
1
Опрос
Работа с Git, 7 уровень, 10 лекция
Недоступен
Работа с Git
Работа с Git
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Анатолий Уровень 57
30 января 2026
❤️
TopDog888 Уровень 14
21 августа 2025
Не совсем понял, зачем создавался ветка init.py. Если по итогу объединение идет с между main и test
Анатолий Уровень 57
30 января 2026
init.py это не ветка, это в файл
Anonymous #1 Уровень 1
19 февраля 2026
тем не менее, для чего создавали этот файл, оно же вообще никак не состыковалось с темой))
EvgenyXIV Уровень 16
28 марта 2026
Скорее всего для демонстрации того. что при вливании ветки test в ветку main отсутствие файла init.py во вливаемой source-ветке test не скажется на его наличии в target-ветке main, хотя это, вроде бы, и так понятно было(
shinobi Уровень 20
28 июля 2025
Уровень норм, но зачем он нам нужен в самом начале? Мы буквально только с циклами, списками и множествами разобрались, на кой хер нам лезть в гитхаб на такой ранней стадии? Или мы уже собираемся с такими знаниями удаленно работать с кучей других программистов?) Не стал ничего делать, прочитал и пролистал лекцию, вернусь в самом конце, когда гитхаб понадобится, если понадобится вообще..
SWK Уровень 26
31 марта 2025

Вот как выглядит история изменений у меня для файла main.py: 
После чего идёт скриншот с историей изменений main.html. И это не первый случай, когда на скриншотах main.html упоминается.
Sergey O. Уровень 64
5 апреля 2025
по хорошему должен быть хотя бы один скрин с .java
Anonymous #1 Уровень 1
19 февраля 2026
скрин с .java только в курсе по html