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

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

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

11.1 Ветки в гите

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

Ветки в гите

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

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

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

Или давайте возьмем пример из жизни. Скажем, написание книги:

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

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

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

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

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

А до этого там что было?

Там было название вашей первой и основной ветки — main.

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

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

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

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

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

Не пугайтесь — тут все просто:

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

  • test
  • main

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

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

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

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

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

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

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

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

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

  • Создаем файл index.html
  • Пишем в нем код <h1>Hello</h1>
  • Коммитим файл

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

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

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

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

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

Проверяем:

  • Сверху по-прежнему отображается ветка main
  • Файлов у нас 2: index.html и main.html
  • Файл main.html содержит код, который был добавлен в ветке test

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пояснения:

  • Слева вы видите историю изменений конкретного файла:
    • Чем изменение новее, тем оно выше, чем старее – тем ниже
    • Также тут отображается история слияния веток
  • Справа — изменения которые были внесены в конкретном коммите
1
Опрос
Декоративные элементы, 10 уровень, 12 лекция
Недоступен
Декоративные элементы
Декоративные элементы
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Kate Уровень 27
25 февраля 2025
Тест не соответствует теме. Возможно, лучше будет если его поставить перед изучением Git.
26 февраля 2025
Это не важно, гит учится на практике и только, начни им пользоваться на постоянке даже когда учишься чему то другому.. и только потом поймешь как все устроено - и это в разы легче чем читать и тесты тыкать