git worktree 命令可在不同文件夹中打开同一个 git 仓库的不同分支,很好的解决不同分支 node_modules 依赖冲突的问题。
将一个项目不同平台的版本放在 git 仓库的不同分支,是一种常见的做法。比如我最近在考虑开发 Gitview (项目链接 )的小程序版,计划将原先 React Native 版的代码放到名为 react-native 的分支,小程序版在一个新的名为 weixin 的分支中开发,master 分支中将只放简介和各分支的索引链接。
由于 node_modules 文件夹是在 .gitignore 之中的,git 不会对其有任何记录或操作,因此不同分支不会有自己独立的 node_modules,使用 git checkout
命令切换时,项目里还是同一个 node_modules 文件夹。
此时在各分支直接执行 npm install
的话,各分支 package.json 中对应的依赖都会被放到同一个 node_modules 文件夹。如果同一个依赖不同分支的版本不一致,则会冲突覆盖,发生问题。
类似问题还会出现在以下场景:
-
你想将项目的 react 版本从 15 升级到 16 ,并尝试使用一些 16 的新特性,因此建立了一个新的分支,但在这期间,你还要在原分支上维护老版本的项目,互相切换时 react 版本会冲突覆盖
-
dev 分支中是全新的内容,但你有些代码片段希望从原来的 master 分支直接拷贝,互相切换后看不到其它分支的代码
以上问题