Практика по гілкам Git

Ця практика навчить вас використовувати Git у колективних проектах. Вважайте, що кожну гілку цього проекту робить окрема людина. Будемо вчитися зливати (об'єднувати) гілки, вирішувати конфлікти.

Виконуйте завдання поступово. Відмічайте виконані завдання кліком по кнопці біля цифри.

Будьте дуже уважними! Якщо щось зробите невірно, пропустите - доведеться завдання виконувати спочатку.

Для цього видаліть репозиторій з GitHub і папку html з папки проекту в себе на комп'ютері.

Відстежуйте помилки після виконання кожної команди. Частіше перевіряйте статус: git status.

Завдання представлені у двох варіантах: коротко і детально. У другому варіанті розписані усі дії.

Завдання

Коротко

Посилання "#" веде до детального завдання.

  1. # Створіть репозиторій merge
  2. # Клонуйте його собі
  3. # Створіть файл index.html, в який добавте блок <main> із заголовком <h1>Hello!</h1>
  4. # Запуште зміни на сервер
  5. # Створіть гілку hey, змініть текст тега h1 на Hey!, запуште на сервер
  6. # Створіть pull-request
  7. # Не приймайте pull-request - вкажіть в коментарі, що необхідно змінити тег title
  8. # Змініть тег title, зміни запуште на сервер
  9. # Прийміть pull-request (об'єднайте гілки master і hey)
  10. # Оновіть локальний мастер (git pull)
  11. # Створіть гілку header і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request
  12. # Створіть гілку footer і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request
  13. # З гілки footer створіть гілку script і добавте в футер скрипт з alert('Hey!'). Запуште зміни, зробіть pull-request
  14. # Прийміть пул-реквести гілки header
  15. # Прийміть пул-реквести гілок footer та script
  16. # Оновіть гілку header, змініть напис Hey! в alert на Welcome!, запуште на сервер, зробіть пул-реквест
  17. # Оновіть гілку footer, змініть напис Hey! в alert на Hello!, запуште на сервер, зробіть пул-реквест
  18. # Прийміть обидва пулл-реквеста, вирішіть конфлікт
  19. # Видаліть усі створені гілки (крім master)

Детально

Вкажіть свій логін на GitHub: , це дозволить персоналізувати посилання в завданнях нижче (приклад: https://github.com/ваш_логін/).

  1. Створіть на GitHub репозиторій merge (поставте галочку щоб створився файл Readme.md).
  2. В себе на комп'ютері в робочій папці створіть папку проекту merge і клонуйте туди репозиторій:

    git clone https://github.com/ваш_логін/merge.git html

    Проконтролюйте, щоб у папці проекту з'явилась папка html. Перейдіть у неї:

    cd html
  3. Створіть в папці html файл index.html:

    <!doctype html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
      <main>
        <h1>Hello!</h1>
      </main>
    </body>
    </html>
  4. Запуште цей файл на сервер:

    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

    Repository and Network view in GitHub
    Файли репозиторія і графічне відображення коміта у GitHub
  5. Одному з розробників доручають змінити заголовок з 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 браузера - це "м'яке" перезавантаження, без очищення кешу.

    Network view in GitHub
    Графічне відображення гілки у GitHub
  6. Для того, щоб зміни попали в основну гілку master - потрібно зробити Pull Request. Для цього на головній сторінці проекту нажміть велику зелену кнопку "Compare & pull request". Якщо такої не бачите - шукайте невелику білу "New pull request".

    Перевірте, щоб навпроти base: була обрана гілка master, а навпроти compare: - ваша гілка hey. Натисніть велику зелену кнопку "Create pull request". На наступній сторінці не нажимайте кнопку "Merge pull request".

    New pull request
    Кнопки створення пул-реквеста і порівняння гілок

    Пул-реквест - це запит на об'єднання гілок. Учасник проекту виконує свою роботу, заливає (пушить) на сервер і коли робота готова (пушити можна багато разів) - розробник пул-реквестом "просить" свого керівника добавити виконану роботу в гілку master.

    New pull request
    Пул-реквест очікує мержа (з'єднання) з гілкою master
  7. Тепер в роботу включається тімлід (team leader), технічний керівник проекту, досвідчений розробник.

    Керівник перевіряє чи все гаразд, чи немає помилок, і в разі відсутності зауважень об'єднує гілки. Якщо ж щось не так - він пише коментар і не приймає ваш пул-реквест, вам потрібно виправити помилки, доробити те, що вказано в коментарі.

    Тімлід або візуально переглядає код (https://github.com/ваш_логін/merge/pull/1/files), або скачує собі гілку з сервера і перевіряє локально:

    git checkout -b назва_гілки
    git pull origin назва_гілки
    // вам зараз цього робити не треба, оскільки ви і в ролі розробника, і в ролі тімліда

    Будьте строгим тімлідом, не прийміть запит, накажіть своєму підлеглому змінити тег <title>, запишіть у коментар:

    Задай правильний title сторінки: Welcome!
    Comment
    Коментар тім-ліда: причина неприйняття пул-реквеста
  8. ... (Змініть тег title, зміни запуште на сервер)
  9. ... (Прийміть pull-request (об'єднайте гілки master і hey))
  10. ... (Оновіть локальний мастер (git pull))
  11. ... (Створіть гілку header і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request)
  12. ... (Створіть гілку footer і пропишіть відповідний тег у файл. Запуште зміни, зробіть pull-request)
  13. ... (З гілки footer створіть гілку script і добавте в футер скрипт з alert('Hey!'). Запуште зміни, зробіть pull-request)
  14. ... (Прийміть пул-реквести гілки header)
  15. ... (Прийміть пул-реквести гілок footer та script)
  16. ... (Оновіть гілку header, змініть напис Hey! в alert на Welcome!, запуште на сервер, зробіть пул-реквест)
  17. ... (Оновіть гілку footer, змініть напис Hey! в alert на Hello!, запуште на сервер, зробіть пул-реквест)
  18. ... (Прийміть обидва пулл-реквеста, вирішіть конфлікт)
  19. ... (Видаліть усі створені гілки (крім master))

Домашнє завдання

  1. Зареєструйтесь на сайтах GitLab та BitBucket.
  2. Створіть на кожному з цих сайтів по репозиторію, клонуйте їх собі.
  3. Зробіть зміни у файлах, створіть нові файли, додайте зображень, запуште зміни на сервер.
  4. Створіть гілки, зробіть зміни, запуште. Подивіться графік комітів. На цих сайтах графіки вертикальні:
    Network view in GitLab, BitBucket
    Графіки комітів у GitLab, BitBucket