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


80

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

답변:


157

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


1
당신의 충돌이있는 경우 나는이 작품을 믿지 않는 yarn.lock다음과 같은 코드를 포함하는 라인 ============, >>>>>>>>>>>>>>, <<<<<<<<<<<<<. Christine Schlensker의 답변이 말하는대로해야합니다.
theGreenCabbage

42
그것을 믿지 않는 @theGreenCabbage, 그것을 시도
Vanuan

작동하지 않습니다, 던졌습니다error An unexpected error occurred: "Unknown token 7713:1 in /location
Saras Arya

나를 위해 일합니다 16:23 $ yarn yarn install v1.7.0 info Merge conflict detected in yarn.lock and successfully merged.
Brian Di Palma

12
당신은 package.json에 충돌이 먼저 실을 실행 수정해야하고 그것을 처리해야
belgac

55

문제에 대한 이 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

이것과 받아 들여진 대답에 대해, 나는 명령을 여러 번 반복해야하고 git은 다음과 같이 끝납니다. No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch.
ADP

내 수정은 정규 병합에서 이러한 단계로 끝났습니다. 내 리베이스에서는 작동하지 않았습니다.
ADP

1

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"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.