Зміст курсу
Основи GitHub
Основи GitHub
Синхронізація Репозиторіїв
Як згадувалося у попередньому розділі, необхідно синхронізувати нашу локальну гілку з віддаленим репозиторієм. Для цього слід виконати команду 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, зафіксували вирішені зміни та успішно відправили фінальні оновлення у віддалений репозиторій.
Дякуємо за ваш відгук!