Канфлікт пры зліцці галін у Git
У працэсе зліцця двух галін магчымыя канфлікты,
калі ў кожнай з галін мы змянялі адзін і той жа файл.
Разгледзім сітуацыю, калі ў абодвух
галiнах master
і test
з
папярэдняга ўроку мы змянілі і зрабілі
коміт на адзін той жа файл file.txt
.
А затым ужылі каманду зліцця:
git merge test
У выніку ўбачым памылку:
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
Апрача таго, у файле, які змяняецца, мы ўбачым маркеры канфлікту:
<<<<<<< HEAD
тут будуць напісаны змены галіны master
=======
тут будуць напісаны змены галіны test
>>>>>>> test
У верхняй частцы паведамлення паказаны змены, зробленыя ў асноўнай на дадзены момант галіне, у ніжняй частцы - у другой галіне, якую мы хочам зліць з першай. Для вырашэння канфлікту нам неабходна прывесці змесціва файла да агульнага выгляду, папярэдне выдаліўшы (ўручную ў рэдактары!) усе абазначэнні канфлікту, якія пакінуў у ім Git.
Пасля таго, як мы вырашым канфлікт
(гэта значыць пакінем правільны код у файле),
праіндексyем наш файл і зробім коміт
у галіне master
, у якой мы
зараз знаходзімся:
git add file.txt
git commit -m "зліццё"
Толькі пасля гэтага мы можам пераключыцца
на другую галіну test
і зрабіць
усе тыя ж аперацыі, што і ў галіне master
,
у тым ліку і замяніць змесціва файла
file.txt
на тое ж, што і ў першай галіне:
git add file.txt
git commit -m "зліццё"
Цяпер мы можам зноў пераключыцца на асноўную галіну і зліць у яе другую:
git switch master
git merge test
Наўмысна стварыце канфлікт пры зліцці галiн. Затым вырашыце яго.