30. Вирішення конфліктів

Цілі

  • Навчитися вирішувати конфлікти під час злиття

01 Злиття master з гілкою style

Тепер повернемося до гілки style і спробуємо об'єднати її з новою гілкою master.

Виконайте:

git checkout style
git merge master

Результат:

$ git checkout style
Switched to branch 'style'
$ git merge master
Auto-merging lib/hello.html
CONFLICT (content): Merge conflict in lib/hello.html
Automatic merge failed; fix conflicts and then commit the result.

Якщо ви відкриєте lib/hello.html, ви побачите:

Файл: lib/hello.html

<!-- Author: Alexander Shvets (alex@githowto.com) -->
<html>
  <head>
<<<<<<< HEAD
    <link type="text/css" rel="stylesheet" media="all" href="style.css" />
=======
    <!-- no style -->
>>>>>>> master
  </head>
  <body>
    <h1>Hello,World! Life is great!</h1>
  </body>
</html>

Перший розділ - версія на чолі поточної гілки (style). Другий розділ - версія гілки master.

02 Рішення конфлікту

Вам необхідно вручну вирішити конфлікт. Внесіть зміни в lib/hello.html для досягнення наступного результату.

Файл: lib/hello.html

<!-- Author: Alexander Shvets (alex@githowto.com) -->
<html>
  <head>
    <link type="text/css" rel="stylesheet" media="all" href="style.css" />
  </head>
  <body>
    <h1>Hello, World! Life is great!</h1>
  </body>
</html>

03 Зробіть коміт вирішення конфлікту

Виконайте:

git add lib/hello.html
git commit -m "Merged master fixed conflict."

Результат:

$ git add lib/hello.html
$ git commit -m "Merged master fixed conflict."
Recorded resolution for 'lib/hello.html'.
[style 645c4e6] Merged master fixed conflict.

04 Розширені можливості злиття

Git не надає ніяких графічних інструментів злиття, але буде із задоволенням працювати з будь-якими сторонніми інструментами злиття, які ви хочете використовувати (обговорення таких інструментів на StackOverflow).