解决git 不同branch 下node_moudes不同步的问题
做nodejs
开发,或者vue
react
等开发的同学,在使用git
做版本管理的时候肯定碰到过这个问题。
按常规做法node_modules
肯定是被添加到.gitignore
中不需要被提交的
但是在分支切换的时候就会遇到问题 ,经如你在dev
分支下就是升级了某个依赖到最新和版本,这时node_modules
下所有的文件被更新,这时你如果切回到master
分支,修改一个小错误 ,就会发现,由于node_modules
下的依赖已经是新版本,但是master
中还是用的老版本,代码运行就不正常了,所以你不得不npm install
一下,记所有依赖回到原来的版本,master
正常了,再切回dev
,依赖又不对了,又要npm install
一次,很是麻烦。
特别最遇到某个依赖重大更新,可能要修改很多代码的时候,你希望在彻底升级成功之前,不搞乱node_modules
目录。这时候就要祭出git worktree
这个命令了
shell
git worktree add -b upslider ../upslider dev
Preparing ../upslider (identifier upslider)
HEAD is now at 44f4bee fix some bug
上面代码,可以建立一个完全干净的全新工作目录upslider
,来自于dev
分支,你可以cd ../upslider
进入新的工作目录,在这个工作目录下,npm install
以后,你想怎么升级node_modules
,都不会影响到原来工作目录下的node_modules
。
在新的工作目录下,你完成所有的升级工作,测试一切无误以后,就可以commit
了,这样生成一个新的branch
,而且这个用于测试升级新工作目录也可以彻底删除,不用担心,代码已经全部进了branch
。
回到原来的工作目录,你可以用git merge upslider
把修改的代码全部合并到当前工作目录。
这样利用全新目录来升级测试node_modules
下的新依赖,完全不打扰到正常工作目录。