composer.lock git Как правильно/аккуратно решать конфликты

ПРИМИЕЧАНИЕ: подход ниже можно распространять и на другим манифесты пакетов использующие .lock файлы (напр. package.json и package-lock.json), только там для обновления пакетов и вообще работы с ними

Общая идея

  1. оставляем composer.lock что на мастере (те, что в "главной" ветке)
  2. оставляем composer.json что на мастере (те, что в "главной" ветке) либо же сразу решаем тут конфликт вручную, т.к. в отличии от .lock файла тут проще разбираться)
  3. меняем composer.json так как нужно (если ранее просто выбрал версию мастера) - либо в ручную, либо через composer require
  4. выполняем composer update для нужных пакетов

Пример

Например ситуация: конфликт только в composer.lock, с моей стороны было поставлено два новых пакета - my/log и mou/php-tool, также в моем случае composer.json объединился без конфликтов в нужном состоянии),

решаю конфликт так (после выполнения ребейза и перехода в состояние конфликта):

git checkout --theirs composer.lock
git add .
composer update my/log mou/php-tool

Key Words for FKN + antitotal forum (CS VSU):