git Разрешение конфликта вручную -- Какие части файла выбирать. Пример и объяснение где чьи правки <<<<<<< ======= >>>>>>>
Primary tabs
Что что означает
Обычно, когда файл находится в состоянии конфликта его содержимое выглядит как-то так ( в примере одна конфликтная секция -- их можно быть много):
Код/текст, который не вы, ни коллега не трогали <<<<<<< HEAD Тут что-то поправили вы ======= Тут что-то поправил коллега >>>>>>> branch-a
где (важно: помните, что "свой-чужой" тут условности, важно как именно вы подливали изменения, комментарий ниже для варианта git merge):
- branch-a -- имя ветки которую вы вливали в свою (или тут может быть номер коммита если это merge-commit).
- HEAD -- имя ветки, на которой вы стояли (и, возможно стоите сейчас), когда вливали к себе ветку с именем "branch-a" (у вас оно будет скорее всего другим).
-- то есть на самом деле вы можете объединять две ветки, в которых работали другие люди, тогда прокомментировать состояние файла можно так:
Какой-то неизмененёный текст // тут нет, конфликта <<<<<<< HEAD // начало конфлитка Тут что-то поправили // это предлагают, в той ветке/состоянии В КОТОРУЮ вливали ======= Тут что-то поправили но иначе // Это предлагают в той ветки, которую вливали >>>>>>> branch-a // конец кофликной области с именем ветки/коммита, которую вливали
ПРИМЕЧАНИЕ: если во вливаемой ветке только удаляли и ничего не добавляли, то кофликт будет выглядеть как-то так:
Код/текст, который не вы, ни коллега не трогали <<<<<<< HEAD Тут что-то поправили вы ======= >>>>>>> branch-a
Как разрешить конфликт
Оставьте в файле только нужные вам строки, а также уберите уже упоминавшиеся выше фрагменты разделения конфликтных частей файла,
например если было что-то вроде:
<<<<<<< HEAD aaaaaaaaa bbbbb ccc ======= dddddd ffff gggggggggg >>>>>>> branch-a
то в итоге, вы должны оставить ту часть, которую вам нужна (по логике), например:
dddddd ffff gggggggggg
ВНИМАНИЕ: не всегда придется просто выбирать красную или синюю таблетку изменения сверху или снизу -- иногда вам придется выбрать нужные строки (возможно, частично) и снизу и сверху, если и там и там были сделаны важные изменения.
Источник: https://help.github.com/articles/resolvi...
Как еще можно разрешать конфликты
- Через вашу IDE (бывают такие, что поддерживают, удобно если просто выбирается своя или чужая)
- Автоматически разрешить в пользу своей или чужой версии кода в терминале
Видео-материалы
- Видео: пример ручного разрешения конфликтов: https://youtu.be/xTh5mbhA_fc
Источники
- Resolving a merge conflict using the command line: https://help.github.com/articles/resolvi...
- Log in to post comments
- 5012 reads
vedro-compota
Tue, 03/28/2023 - 10:15
Permalink
Автоматическое
Если нужно не глядя принять все свои или все чужие изменения, то можно применять автоматическое разрешение конфликтов http://fkn.ktu10.com/?q=node/16512
_____________
матфак вгу и остальная классика =)