Гілка у GIT
Гілка в Git – це простий файл, що містить 40 символів контрольної суми SHA-1 комміта, на який вона вказує; тому операції з гілками є дешевими з погляду споживання ресурсів чи часу. Створення нової гілки в Git відбувається так само швидко і просто як запис 41 байта у файл (40 знаків та переклад рядка).
Робота з гілками у GIT
Перехід до певної версії проекту за SHA1-хешем коміту:
git checkout <commit hash> (можна використовувати перші ~5 символів)
Після цього git переміщує вказівник HEAD на певний хеш певного коміту,
git після цього візьме певні об’єкти з репозиторію та зробить їх переміщення в робочу директорію.
Якщо є декілька гілок, можна виконати перехід в певну версію проекту:
git checkout <branch name>
Робота з гілками у GIT
Створення нової гілки (рекомендовано надавати релевантну назву гілці):
git branch <branch name>
+
git checkout <branch name>
=
Створення нової гілки та перейти до неї:
git checkout -b <branch name>
Отримати перелік всіх гілок:
git branch
Перейменування поточної гілки:
git branch –m <new branch name>
Видалення гілки:
git branch –d <branch name>
Поточну гілку видалити не можна!
Треба перейти на іншу, а потім видалити необхідну гілку.
Злиття гілок у GIT
Злиття іншої гілки(feature branch) у поточну(receiving branch):
git merge <feature branch name>
Поточну гілку можна об’єднати з будь-якою існуючою.
Треба перейти на іншу, а потім виконати злиття з необхідною гілкою.
Алгоритм злиття гілок у GIT
1. Створюємо нову гілку.
2. Виконати перехід у нову гілку.
3. Внести зміни у проект.
4. Створити коміт/декілька комітів у новій гілці.
5. Перейти назад до попередньої гілки, наприклад, main. Також створити коміти.
6. Виконати злиття нової гілки з поточною.
7. Після злиття гілок нову гілку можна видалити.
Робота з репозиторієм на віддаленому сервері GIT
Робота з гілками у GIT
Відображення усіх гілок, навіть тих, які знаходяться на віддалених репозиторіях:
git branch –a
Відображення усіх видалених гілок:
git branch –r
Для перегляду останнього коміту на кожній з гілок, виконайте команду:
git branch -v
Опції --merged та --no-merged можуть відфільтрувати цей список для виведення лише тих гілок,
які злиті або ще не злиті в поточну гілку. Для відображення гілок, які ви злили з поточної, можете виконати команду:
git branch --merged
Для відображення всіх гілок, що містять напрацювання, які ви ще не злили в поточну гілку, виконайте команду:
git branch --no-merged
Перейменувати гілку локально можна за допомогою команди:
git branch --move bad-branch-name corrected-branch-name
Гілка bad-branch-name буде перейменована в corrected-branch-name, але ця зміна поки що
локальна. Для того, щоб усі побачили виправлену гілку у віддаленому репозиторії, треба
відправити її туди за допомогою наступної команди:
git push --set-upstream origin corrected-branch-name
Зверніть увагу, що поточна гілка corrected-branch-name, яка також є і на віддаленому сервері.
Однак, стара гілка все ще там, але її можна видалити за допомогою команди:
git push origin --delete bad-branch-name
Тепер старе ім'я гілки повністю замінено на виправлене.
Зміна імені гілки, наприклад master/main/mainline/default, зламає інтеграції, служби, допоміжні утиліти та скрипти збирання, які використовує ваш репозиторій. Перш ніж це зробити, обов'язково проконсультуйтеся з колегами. Також переконайтеся, що ви здійснили ретельний пошук у своєму репозиторії та оновили всі посилання на старе ім'я гілки у вашому коді чи скриптах.
Перейменуйте локальну гілку master на main за допомогою наступної команди:
git branch --move master main
Після цього локальної гілки master більше не існує, тому що вона була перейменована на гілку main.
Щоб решта могли бачити нову гілку main, вам потрібно відправити їх у загальний репозиторій. Це робить перейменовану гілку доступною у віддаленому репозиторії:
git push --set-upstream origin main
Локальна гілка master зникла, оскільки вона замінена гілкою main. Гілка main доступна у
віддаленому репозиторії. Стара гілка master все ще присутня у віддаленому репозиторії. Інші
учасники будуть продовжувати використовувати гілку master як основу для своєї роботи, поки ви не здійсните низку додаткових дій.
Тепер для завершення переходу на нову гілку перед нами стоять такі завдання:
• Усі проекти, які залежать від поточного, повинні будуть оновити свій код та/або конфігурацію.
• Оновіть конфігурацію всіх тестів, що запускаються.
• Виправте скрипти складання та публікації артефактів.
• Виправте налаштування репозиторію на сервері: встановіть нову гілку за промовчанням, оновіть правила злиття, а також інші налаштування, які залежать від імені гілок.
• Оновіть документацію, виправивши посилання, які вказують на стару гілку.
• Злийте або скасуйте запити на злиття змін, націлені на стару гілку.
Після того, як ви виконали всі ці завдання і впевнені, що гілка main працює так само, як гілка master, ви можете видалити гілку master: git push origin --delete master
Публікація репозиторію
GitLab – це система, що дозволяє зберігати свої git-репозиторії на віддалених серверах.
У чому різниця GitLab від GitHub або BitBucket?
Принципово – ні в чому. Кожен із цих сайтів дає можливість зберігати на їхніх серверах свої репозиторії. Є різниця в інтерфейсі та додаткових функціях, які надає сайт (наприклад: CI\CD, створення sub-репозиторіїв та інше).
Початок роботи
Спільна робота та оновлення проектів
Коли ви готові поділитися своїми напрацюваннями, лише кілька команд допоможуть вам працювати з віддаленими репозиторіями.
Команда git fetch пов'язується з віддаленим репозиторієм і забирає з нього всі зміни, яких у вас поки що немає і зберігає їх локально.
Команда git pull працює як комбінація команд git fetch і git merge, тобто Git спочатку забирає зміни із зазначеного віддаленого репозиторію, а потім намагається злити їх із поточною гілкою.
Команда git push використовується для встановлення зв'язку з віддаленим репозиторієм, обчислення локальних змін відсутніх у ньому, та власне їх передачі у вищезгаданий репозиторій. Цій команді потрібне право на запис у репозиторій, тому вона використовує автентифікацію.
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓Тема уроку: 2. Публікація репозиторію
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩