24. Створення конфлікту
Цілі
- Створення конфліктуючих змін в гілці
main
.
Коли ви об'єднуєте дві гілки, Git намагається перенести зміни з однієї гілки до іншої. Якщо в обох гілках була змінена однакова частина файлу, Git не зможе об'єднати зміни автоматично. У цьому випадку Git повідомить про конфлікт і попросить вас вирішити його вручну. У цьому уроці ми змоделюємо конфлікт, а потім навчимося його вирішувати.
У реальному житті конфлікти злиття трапляються регулярно під час роботи в команді. Наприклад, ви і ваш колега почали працювати над двома різними фічами, які впливають на одні й ті ж файли. Ваш колега закінчив свою роботу першим і об'єднав свої зміни в гілку main
. Тепер ви також хочете об'єднати свої зміни до гілки main
. Але гілка main
тепер відрізняється від тієї, над якою ви починали працювати — у ній з'явився новий код, доданий вашим колегою. Ймовірно, Git не зможе об'єднати ваші зміни автоматично і попросить допомоги від людини.
01 Поверніться у main
і створіть конфлікт
Пам'ятаєте, в нашій гілці main
сторінка все ще називається hello.html
? Поверніться до гілки main
і внесіть наступні зміни:
git switch main
Файл: hello.html
<!-- Author: Alexander Shvets (alex@githowto.com) -->
<html>
<head>
<title>Hello World Page</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>Let's learn Git together.</p>
</body>
</html>
Виконайте
git add hello.html
git commit -m "Added meta title"
02 Перегляд гілок
Виконайте
git log --all --graph
Результат
$ git log --all --graph
* 85c14e9 2023-11-28 | Added meta title (HEAD -> main) [Alexander Shvets]
| * a33deed 2023-11-28 | Merge branch 'main' into style (style) [Alexander Shvets]
| |\
| |/
|/|
* | ee16740 2023-11-28 | Added README [Alexander Shvets]
| * 0ee0113 2023-11-28 | Renamed hello.html; moved style.css [Alexander Shvets]
| * 903eb1d 2023-11-28 | Included stylesheet into hello.html [Alexander Shvets]
| * 555372e 2023-11-28 | Added css stylesheet [Alexander Shvets]
|/
* 9288a33 2023-11-28 | Added copyright statement with email [Alexander Shvets]
* b7614c1 2023-11-28 | Added HTML header (tag: v1) [Alexander Shvets]
* 46afaff 2023-11-28 | Added standard HTML page tags (tag: v1-beta) [Alexander Shvets]
* 78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
* 5836970 2023-11-28 | Initial commit [Alexander Shvets]
Після коміту «Added README» гілка main
була об'єднана з гілкою style
, але зараз в main
є додатковий коміт, що не був злитий із style
.
03 Далі
Остання зміна в main
конфліктує з деякими змінами в style
. У наступному кроці ми вирішимо цей конфлікт.