Когда несколько веток git изменяют зависимости в проекте, который использует Yarn, это может привести к конфликту в файле yarn.lock. Не рекомендуется удалять и повторно создавать файл yarn.lock, потому что это, вероятно, приведет к непреднамеренному обновлению нескольких пакетов. Как лучше всего быстро разрешить конфликты в этом файле?

Ответы (4)

Начиная с Yarn 1.0 это просто, потому что в него встроена поддержка этого сценария.

Сначала разрешите конфликт в package.json вручную, а затем просто запустите это:

$ yarn install

yarn install v1.0.1
info Merge conflict detected in yarn.lock and successfully merged.
[1/4] Resolving packages...

И тогда конфликт будет разрешен, и вы можете зафиксировать это или продолжить перебазирование, если это было то, что вы делали.

этот файл слишком длинный, поэтому, если вам нужно проверить конфликт в vscode без терминала, возможно, вы можете попробовать поискать в этом файле такие термины, как: >>>>>>>, = ======, <<<<<<< или HEAD

Вместо rebase я использую исполняемый интерактивный сценарий bash, который извлекает только Pipfile.lock Pipfile

#!/usr/bin/env bash
export GIT_TRACE=1
git checkout origin/master -- Pipfile.lock Pipfile
git commit -m "fetch to branch Pipfile.lock, Pipfile from origin/master" -- Pipfile.lock Pipfile
read  -n 1 -p "Do your changes in Pipfile and press Enter ..."
pipenv lock --clear
git commit -m "re-apply changes to Pipfile.lock, Pipfile" -- Pipfile.lock Pipfile
echo "Done"

Хороший подход подробно описан в этом обсуждении на github о проблеме.

git перебазировать origin / master

При первом конфликте я оформляю заказ yarn.lock затем повторно выполните установку

git checkout origin / master - yarn.lock
пряжа установить

Это генерирует new yarn.lock на основе исходной / основной версии yarn.lock, но включая изменения, которые я внес в свой package.json. Тогда это просто:

git add yarn.lock
git rebase - продолжить

2022 WebDevInsider