Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

Как разрешается конфликт изменений при слиянии ветвей?

#git #git_merge


Диспозиция такая:

Есть две ветки. в каждой из них присутствует файл который редактировался (один и тот же).

При слиянии веток что произойдет с этим файлом?
    


Ответы

Ответ 1



Если кратко: произойдет конфликт слияния (merge conflict) и его нужно будет как-то разрешить. Для бинарных файлов: только выбрать версию А или Б (или другие, если octomerge). Бывает, что бинарные файлы Git воспринимает как текстовые и тогда merge их необратимо портит. Это прежде всего относится к файлам office-форматов. Для текстовых файлов: пара вариантов: Вручную разрешить конфликты После merge в файле появятся куски из обеих сливаемых версий, как-то так: <<<<<<< HEAD содержимое файла из первой ветки ====== содержимое файла из второй ветки >>>>>>> otherbranch Нужно будет вручную отредактировать конфликтный файл (или файлы), при этом не забывая удалить метки, оставленные Git (>>>>>>> otherbranch). Затем: git add conflicting-file-name.txt git commit -m'merged A and B' Выбрать одну из версий файла Можно явным образом указать: какой файл выбирать. Подходит, только если одна из версий не нужна. git checkout --ours a.txt git checkout --theirs a.txt git add a.txt git commit -m "added theirs" Сделал вам тестовый репозиторий, чтобы сразу клонировать и посмотреть, как оно работает. git clone https://github.com/NickVolynkin/git-merge-test.git cd git-merge-test git merge otherbranch open a.txt В файле видны отметки, можете с ним теперь проделать вышеописанные действия. Подробнее написано в книге Pro Git на русском. Ее обязательно нужно прочитать, прежде чем работать со слиянием веток. Фундаментальное понимание процесса ничем не заменить. Потренироваться с ветвлением и слиянием можно тут: Learn Git Branching.

Ответ 2



проблемы с мерджем могут возникнуть из-за использования неудобного редактора. Попробуйте сменить Ваш консольный редактор на IDE или специализированный софт для этих нужд https://git-scm.com/download/gui/linux Nick Volynkin теорию скинул

Комментариев нет:

Отправить комментарий