[javascript] yarn.lock에서 git 충돌을 어떻게 해결합니까?

여러 git 분기가 Yarn 을 사용하는 프로젝트에서 종속성을 수정 하면 yarn.lock 파일에 충돌이 발생할 수 있습니다. yarn.lock 파일을 삭제하고 재생성하는 것은 바람직하지 않습니다. 이로 인해 여러 패키지가 의도 치 않게 업그레이드 될 수 있기 때문입니다. 이 파일의 충돌을 빠르게 해결하는 가장 좋은 방법은 무엇입니까?



답변

Yarn 1.0부터는 이 시나리오에 대한 지원이 내장되어 있기 때문에 쉽습니다. 다음을 실행하십시오.

$ yarn install

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

이제 당신은 git add yarn.lock && git rebase --continue


답변

문제에 대한 이 github 토론 에 좋은 접근 방식이 자세히 설명되어 있습니다.

git rebase origin/master

첫 번째 충돌이 발생하면 체크 아웃 한 yarn.lock다음 설치를 다시 수행합니다.

git checkout origin/master -- yarn.lock
yarn install

이것은 yarn.lockyarn.lock의 오리진 / 마스터 버전을 기반으로 새로운 것을 생성 하지만 package.json. 그렇다면 다음과 같은 문제입니다.

git add yarn.lock
git rebase --continue


답변

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"


답변