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
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ