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

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

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

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

Note
Примітка

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

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

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

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

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

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

Note
Примітка

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

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

Розгляньмо, що ми зробили у цих двох главах:

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

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

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

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

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

question mark

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

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 5

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

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

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

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

Note
Примітка

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

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

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

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

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

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

Note
Примітка

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

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

Розгляньмо, що ми зробили у цих двох главах:

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

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

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

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

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

question mark

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

Select the correct answer

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

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

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

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