如何解决yarn.lock中的git冲突


79

当多个git分支修改使用Yarn的项目中的依赖项时,很可能在yarn.lock文件中引入冲突。删除并重新生成yarn.lock文件不是一个好主意,因为这可能会导致无意中升级多个软件包。快速解决此文件中冲突的最佳方法是什么?

Answers:


151

从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

41
@theGreenCabbage不相信,请尝试
Vanuan

不起作用,抛出error An unexpected error occurred: "Unknown token 7713:1 in /location
Saras Arya '18

为我工作 16:23 $ yarn yarn install v1.7.0 info Merge conflict detected in yarn.lock and successfully merged.
Brian Di Palma

11
您需要先在package.json中修复冲突,然后运行yarn并应进行处理
belgac

54

这个关于此问题的github讨论中,详细介绍了一种好的方法。

git rebase origin/master

当出现第一个冲突时,我签出yarn.lock然后重新执行安装

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

这将yarn.lock基于yarn.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

我没有重新设置基准,而是使用可执行的交互式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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.