Разрешение конфликтов¶
После выполнения `` git merge`` или `` git cherry-pick`` могут возникнуть конфликты, потому что некоторые коммиты пытаются внести изменения в одну и ту же строку. Итак, вам нужно выбрать, какое изменение будет использоваться. Это может быть один вариант, оба варианта или новый вариант.
Что делать, если у вас возникли конфликты:
Проверь состояние
git status
Разрешить конфликты:
либо отредактируйте файлы вручную:
- открыть файл с конфликтами
- найдите `` <<< `` или `` >>> `` и удалите устаревший вариант или сделайте смесь обоих вариантов.
или используйте следующие команды, если вы уверены, какая версия должна быть сохранена:
git checkout --ours -- <file> # or git checkout --theirs -- <file>
Пометить файлы как разрешенные с помощью команды `` git add``
Выполнено.
git push
Удаленные файлы¶
Иногда изменения могут быть противоречивыми, поскольку файлы больше не существуют в * нашей * версии, но обновляются в * их * (или наоборот). В этом случае выполните код ниже, чтобы игнорировать такие изменения:
git status | grep 'deleted by us' | awk '{print $4}' | xargs git rm
git status | grep 'deleted by them' | awk '{print $4}' | xargs git rm
Примечания¶
- Важно, чтобы на этапе разрешения конфликта вы не делали никаких обновлений внутри конфликтующих строк. Вы можете только выбрать, какие строки следует сохранить, а какие удалить. Например, если вы разрешаете конфликты из-за переноса некоторого обновления функции из одной версии odoo (например, 8.0) в другую (например, 9.0), то такие изменения должны быть настроены некоторое время, чтобы заставить update feature работать с целевой версией odoo. Но вы должны сделать такую настройку только на новом коммите. Сделайте коммиты слияния chery-picking только о слияниях и chery-picking, сделайте коммиты портирования отдельно.
- Если у вас нет конфликтов, вам не нужно делать коммит после cherry-pick, потому что он создает коммит самостоятельно.