Разрешение конфликтов

После выполнения `` 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, потому что он создает коммит самостоятельно.