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

Chr*_*ker 60 javascript git npm yarnpkg

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

Van*_*uan 105

从Yarn 1.0开始就很容易了.跑吧:

$ yarn install

yarn install v1.0.1
info Merge conflict detected in yarn.lock and successfully merged.
[1/4] Resolving packages...
Run Code Online (Sandbox Code Playgroud)

现在你只需要这样做 git add yarn.lock && git rebase --continue

  • @theGreenCabbage不相信,试试吧 (30认同)
  • 你需要首先在package.json中修复你的冲突然后运行yarn它应该处理它 (6认同)
  • 它为我打印出“成功合并”消息,但yarn.lock仍然包含合并冲突。 (6认同)
  • 如果 `package.json` 中没有冲突,则此方法不起作用 (5认同)
  • 如果您的“yarn.lock”中包含诸如“============”、“>>>>>>>>>>”之类的代码行,我不相信这会起作用>>>>`,`<<<<<<<<<<<<<`。您仍然需要按照 Christine Schlensker 的回答进行操作。 (2认同)
  • 这可行,但 webstorm 仍然显示为冲突,如何将其标记为已解决? (2认同)
  • @rsobies 只是在终端 `git add yarn.lock` 中运行 (2认同)

Chr*_*ker 48

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

git rebase origin/master
Run Code Online (Sandbox Code Playgroud)

当第一次冲突发生时,我检查yarn.lock然后重新执行安装

git checkout origin/master -- yarn.lock 
yarn install
Run Code Online (Sandbox Code Playgroud)

这会yarn.lock根据yarn.lock的origin/master版本生成一个新的,但包括我对我做的更改package.json.那么这只是一个问题:

git add yarn.lock
git rebase --continue
Run Code Online (Sandbox Code Playgroud)