Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Синхронізація Репозиторіїв | Більш Складні Робочі Процеси
Основи GitHub

Синхронізація Репозиторіїв

Свайпніть щоб показати меню

Як згадувалося у попередньому розділі, необхідно синхронізувати локальну гілку з віддаленим репозиторієм. Для цього слід виконати команду git pull:

git pull
Спроба виконати pull

Під час виконання команди git pull Git отримав оновлення, але виявив, що локальна та віддалена гілки розійшлися, тобто є зміни в обох гілках, які потрібно узгодити. Git не зміг продовжити, оскільки йому потрібно знати, як обробити ці відмінності, тому встановимо опцію merge і знову виконаємо команду git pull:

git config pull.rebase false
Note
Примітка

Операцію rebase буде розглянуто пізніше в цьому курсі.

git pull
Конфлікт злиття

Git спробував автоматично об'єднати локальні та віддалені зміни у файлі README.md, але виник конфлікт злиття. Розглянемо дерево комітів, яке показує, де відбулося розгалуження та виникли конфлікти:

git log --graph --oneline --all
Дерево комітів

Вирішення конфлікту

Як видно, наш поточний локальний коміт і коміт у віддаленій гілці main мають спільного предка, але розійшлися, що призвело до конфлікту злиття, який потрібно вирішити. Для цього відкриємо файл README.md у редакторі Vim:

vim README.md
Конфлікти у Vim

Щоб вирішити цей конфлікт, потрібно увійти в режим вставки натисканням i, видалити маркери конфлікту та об'єднати ці зміни наступним чином:

Вирішений конфлікт

Далі слід натиснути клавішу Escape, ввести :wq і натиснути клавішу Enter, щоб зберегти зміни та вийти з Vim. Тепер, щоб завершити злиття, файл README.md потрібно додати до області індексації, а потім зафіксувати за допомогою відповідних команд:

git add README.md
git commit
Note
Примітка

Після виконання команди git commit відкриється текстовий редактор за замовчуванням (найімовірніше, Vim). Ви можете залишити повідомлення коміту за замовчуванням і вийти з Vim так само, як щойно, або відредагувати повідомлення і потім вийти.

Фіксація об'єднаного файлу

Нарешті, можна безпечно виконати команду git push і переконатися, що тристороннє злиття пройшло успішно, переглянувши дерево комітів:

git log --graph --oneline --all
Дерево комітів

Підсумуємо, що було зроблено у цих двох главах:

  1. Було змодельовано співпрацю шляхом внесення змін як локально, так і віддалено у файл README.md;

  2. Спочатку зміни були закомічені безпосередньо у віддалений репозиторій, а потім інші зміни зроблені локально;

  3. При спробі відправити локальні зміни виник конфлікт, оскільки у віддаленому репозиторії з’явилися нові оновлення;

  4. Для вирішення цього було виконано отримання змін з віддаленого репозиторію, що призвело до конфлікту злиття;

  5. Далі конфлікт у файлі README.md було вирішено вручну за допомогою редактора Vim, закомічено вирішені зміни та успішно відправлено фінальні оновлення у віддалений репозиторій.

question mark

Яка команда налаштовує Git використовувати злиття (merge), а не rebase, під час виконання git pull?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 3. Розділ 2
some-alt