Синхронізація Репозиторіїв
Як згадувалося у попередньому розділі, необхідно синхронізувати нашу локальну гілку з віддаленим репозиторієм. Для цього слід виконати команду git pull
:
Коли ми виконали команду git pull
, Git отримав оновлення, але помітив, що наші локальна та віддалена гілки розійшлися — тобто, зміни є на обох гілках і їх потрібно узгодити. Git не може продовжити, оскільки йому потрібно знати, як обробити ці відмінності, тому встановимо опцію merge і знову виконаємо команду git pull
:
Операцію rebase буде розглянуто пізніше у цьому курсі.
Git спробував автоматично об'єднати локальні та віддалені зміни у файлі README.md
, але виник конфлікт злиття. Розглянемо дерево комітів, яке показує, де саме відбулося розходження та виникли конфлікти:
Вирішення конфлікту
Як видно, наш поточний локальний коміт і коміт у віддаленій гілці main
мають спільного предка, але розходяться, що призводить до конфлікту злиття, який потрібно вирішити. Для цього відкриємо файл README.md
у редакторі Vim:
Щоб вирішити цей конфлікт, потрібно увійти в режим вставки, натиснувши i
, видалити маркери конфлікту та об'єднати ці зміни наступним чином:
Далі натисніть клавішу Escape, введіть :wq
і натисніть клавішу Enter, щоб зберегти зміни та вийти з Vim. Тепер, щоб завершити злиття, файл README.md
потрібно додати до області індексації, а потім зафіксувати за допомогою відповідних команд:
Після виконання команди git commit
відкриється текстовий редактор за замовчуванням (найімовірніше, Vim). Ви можете залишити повідомлення коміту за замовчуванням і вийти з Vim так само, як ми щойно зробили, або відредагувати повідомлення і потім вийти.
Нарешті, можна безпечно виконати команду git push
і переконатися, що трьохстороннє злиття пройшло успішно, переглянувши дерево комітів:
Розгляньмо, що ми зробили у цих двох главах:
-
Ми змоделювали співпрацю, вносячи зміни як локально, так і віддалено у файл
README.md
; -
Спочатку ми зафіксували зміну безпосередньо у віддаленому репозиторії, а потім внесли іншу зміну локально;
-
Коли ми спробували відправити локальні зміни, зіткнулися з конфліктом, оскільки у віддаленому репозиторії з’явилися нові оновлення;
-
Щоб вирішити це, ми отримали зміни з віддаленого репозиторію, що призвело до конфлікту злиття;
-
Далі ми вручну вирішили конфлікт у файлі
README.md
за допомогою редактора Vim, зафіксували вирішені зміни та успішно відправили фінальні оновлення у віддалений репозиторій.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Запитайте мені питання про цей предмет
Сумаризуйте цей розділ
Покажіть реальні приклади
Awesome!
Completion rate improved to 5
Синхронізація Репозиторіїв
Свайпніть щоб показати меню
Як згадувалося у попередньому розділі, необхідно синхронізувати нашу локальну гілку з віддаленим репозиторієм. Для цього слід виконати команду git pull
:
Коли ми виконали команду git pull
, Git отримав оновлення, але помітив, що наші локальна та віддалена гілки розійшлися — тобто, зміни є на обох гілках і їх потрібно узгодити. Git не може продовжити, оскільки йому потрібно знати, як обробити ці відмінності, тому встановимо опцію merge і знову виконаємо команду git pull
:
Операцію rebase буде розглянуто пізніше у цьому курсі.
Git спробував автоматично об'єднати локальні та віддалені зміни у файлі README.md
, але виник конфлікт злиття. Розглянемо дерево комітів, яке показує, де саме відбулося розходження та виникли конфлікти:
Вирішення конфлікту
Як видно, наш поточний локальний коміт і коміт у віддаленій гілці main
мають спільного предка, але розходяться, що призводить до конфлікту злиття, який потрібно вирішити. Для цього відкриємо файл README.md
у редакторі Vim:
Щоб вирішити цей конфлікт, потрібно увійти в режим вставки, натиснувши i
, видалити маркери конфлікту та об'єднати ці зміни наступним чином:
Далі натисніть клавішу Escape, введіть :wq
і натисніть клавішу Enter, щоб зберегти зміни та вийти з Vim. Тепер, щоб завершити злиття, файл README.md
потрібно додати до області індексації, а потім зафіксувати за допомогою відповідних команд:
Після виконання команди git commit
відкриється текстовий редактор за замовчуванням (найімовірніше, Vim). Ви можете залишити повідомлення коміту за замовчуванням і вийти з Vim так само, як ми щойно зробили, або відредагувати повідомлення і потім вийти.
Нарешті, можна безпечно виконати команду git push
і переконатися, що трьохстороннє злиття пройшло успішно, переглянувши дерево комітів:
Розгляньмо, що ми зробили у цих двох главах:
-
Ми змоделювали співпрацю, вносячи зміни як локально, так і віддалено у файл
README.md
; -
Спочатку ми зафіксували зміну безпосередньо у віддаленому репозиторії, а потім внесли іншу зміну локально;
-
Коли ми спробували відправити локальні зміни, зіткнулися з конфліктом, оскільки у віддаленому репозиторії з’явилися нові оновлення;
-
Щоб вирішити це, ми отримали зміни з віддаленого репозиторію, що призвело до конфлікту злиття;
-
Далі ми вручну вирішили конфлікт у файлі
README.md
за допомогою редактора Vim, зафіксували вирішені зміни та успішно відправили фінальні оновлення у віддалений репозиторій.
Дякуємо за ваш відгук!