Практика по гілкам Git
Ця практика навчить вас використовувати Git у колективних проектах. Вважайте, що кожну гілку цього проекту робить окрема людина. Будемо вчитися зливати (об'єднувати) гілки, вирішувати конфлікти.
Виконуйте завдання поступово. Відмічайте виконані завдання кліком по кнопці біля цифри.
Будьте дуже уважними! Якщо щось зробите невірно, пропустите - доведеться завдання виконувати спочатку.
Для цього видаліть репозиторій з GitHub і папку html з папки проекту в себе на комп'ютері.
Відстежуйте помилки після виконання кожної команди. Частіше перевіряйте статус: git status.
Завдання представлені у двох варіантах: коротко і детально. У другому варіанті розписані усі дії.
Завдання
Коротко
Посилання "#" веде до детального завдання.
- # Створіть репозиторій merge
- # Клонуйте його собі
- # Створіть файл index.html, в який добавте блок <main> із заголовком <h1>Hello!</h1>
- # Запуште зміни на сервер
- # Створіть гілку hey, змініть текст тега h1 на Hey!, запуште на сервер
- # Створіть pull-request
- # Не приймайте pull-request - вкажіть в коментарі, що необхідно змінити тег title
- # Змініть тег title, зміни запуште на сервер
- # Прийміть pull-request (об'єднайте гілки master і hey)
- # Оновіть локальний мастер (git pull)
- # Створіть гілку header і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request
- # Створіть гілку footer і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request
- # З гілки footer створіть гілку script і добавте в футер скрипт з alert('Hey!'). Запуште зміни, зробіть pull-request
- # Прийміть пул-реквести гілки header
- # Прийміть пул-реквести гілок footer та script
- # Оновіть гілку header, змініть напис Hey! в alert на Welcome!, запуште на сервер, зробіть пул-реквест
- # Оновіть гілку footer, змініть напис Hey! в alert на Hello!, запуште на сервер, зробіть пул-реквест
- # Прийміть обидва пулл-реквеста, вирішіть конфлікт
- # Видаліть усі створені гілки (крім master)
Детально
Вкажіть свій логін на GitHub: , це дозволить персоналізувати посилання в завданнях нижче (приклад: https://github.com/ваш_логін/).
- Створіть на GitHub репозиторій merge (поставте галочку щоб створився файл Readme.md).
-
В себе на комп'ютері в робочій папці створіть папку проекту merge і клонуйте туди репозиторій:
git clone https://github.com/ваш_логін/merge.git htmlПроконтролюйте, щоб у папці проекту з'явилась папка html. Перейдіть у неї:
cd html -
Створіть в папці html файл index.html:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<main>
<h1>Hello!</h1>
</main>
</body>
</html> -
Запуште цей файл на сервер:
git status
git add .
git status
git commit -m "section main"
git status
// проконтролюйте, щоб не було помилок, повинно писати:
// nothing to commit, working tree clean
git pushПеревірте зміни на сервері:
https://github.com/ваш_логін/merge
https://github.com/ваш_логін/merge/network
Файли репозиторія і графічне відображення коміта у GitHub -
Одному з розробників доручають змінити заголовок з Hello! на Hey!
Кожне завдання виконується в окремій гілці. Тому створіть нову гілку hey.
Нові гілки можна створювати лише якщо команда git status видає "nothing to commit".
git status
git checkout -b hey
git branchЗмініть текст Hello! на Hey! і запуште зміни на сервер.
git add .
git commit -m "change title to Hey!"
git status
// nothing to commit ???
git push origin heyЗверніть увагу, що якщо ви працюєте з гілками, то потрібно писати push/pull origin назва_гілки.
Перевірте графік: https://github.com/ваш_логін/merge/network
Оновлюйте сторінку клавішами Ctrl+Shift+R ("жорстке" перезавантаження з очищенням тимчасового кешу), не користуйтесь клавішою F5 чи іконкою перезавантаження сторінки біля строки URL браузера - це "м'яке" перезавантаження, без очищення кешу.
Графічне відображення гілки у GitHub -
Для того, щоб зміни попали в основну гілку master - потрібно зробити Pull Request. Для цього на головній сторінці проекту нажміть велику зелену кнопку "Compare & pull request". Якщо такої не бачите - шукайте невелику білу "New pull request".
Перевірте, щоб навпроти base: була обрана гілка master, а навпроти compare: - ваша гілка hey. Натисніть велику зелену кнопку "Create pull request". На наступній сторінці не нажимайте кнопку "Merge pull request".
Кнопки створення пул-реквеста і порівняння гілок Пул-реквест - це запит на об'єднання гілок. Учасник проекту виконує свою роботу, заливає (пушить) на сервер і коли робота готова (пушити можна багато разів) - розробник пул-реквестом "просить" свого керівника добавити виконану роботу в гілку master.
Пул-реквест очікує мержа (з'єднання) з гілкою master -
Тепер в роботу включається тімлід (team leader), технічний керівник проекту, досвідчений розробник.
Керівник перевіряє чи все гаразд, чи немає помилок, і в разі відсутності зауважень об'єднує гілки. Якщо ж щось не так - він пише коментар і не приймає ваш пул-реквест, вам потрібно виправити помилки, доробити те, що вказано в коментарі.
Тімлід або візуально переглядає код (https://github.com/ваш_логін/merge/pull/1/files), або скачує собі гілку з сервера і перевіряє локально:
git checkout -b назва_гілки
git pull origin назва_гілки
// вам зараз цього робити не треба, оскільки ви і в ролі розробника, і в ролі тімлідаБудьте строгим тімлідом, не прийміть запит, накажіть своєму підлеглому змінити тег <title>, запишіть у коментар:
Задай правильний title сторінки: Welcome!
Коментар тім-ліда: причина неприйняття пул-реквеста - ... (Змініть тег title, зміни запуште на сервер)
- ... (Прийміть pull-request (об'єднайте гілки master і hey))
- ... (Оновіть локальний мастер (git pull))
- ... (Створіть гілку header і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request)
- ... (Створіть гілку footer і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request)
- ... (З гілки footer створіть гілку script і добавте в футер скрипт з alert('Hey!'). Запуште зміни, зробіть pull-request)
- ... (Прийміть пул-реквести гілки header)
- ... (Прийміть пул-реквести гілок footer та script)
- ... (Оновіть гілку header, змініть напис Hey! в alert на Welcome!, запуште на сервер, зробіть пул-реквест)
- ... (Оновіть гілку footer, змініть напис Hey! в alert на Hello!, запуште на сервер, зробіть пул-реквест)
- ... (Прийміть обидва пулл-реквеста, вирішіть конфлікт)
- ... (Видаліть усі створені гілки (крім master))
Домашнє завдання
- Зареєструйтесь на сайтах GitLab та BitBucket.
- Створіть на кожному з цих сайтів по репозиторію, клонуйте їх собі.
- Зробіть зміни у файлах, створіть нові файли, додайте зображень, запуште зміни на сервер.
-
Створіть гілки, зробіть зміни, запуште. Подивіться графік комітів. На цих сайтах графіки вертикальні:
Графіки комітів у GitLab, BitBucket