作nodejs开发,或者vue react等开发的同窗,在使用git 作版本管理的时候确定碰到过这个问题。
按常规作法node_modules 确定是被添加到.gitignore中不须要被提交的vue
可是在分支切换的时候就会遇到问题 ,经如你在dev分支下就是升级了某个依赖到最新和版本,这时node_modules下全部的文件被更新,这时你若是切会master分支,修改一个小错误 ,就会发现,因为node_modules 下的依赖已是新版本,可是master中仍是用的老版本,代码运行就不正常了,因此你不得不npm install一下,记全部依赖回到原来的版本,master正常了,再切回dev,依赖又不对了,又要npm install 一次,非常麻烦。node
特别最遇到某个依赖重大更新,可能要修改不少代码的时候,你但愿在完全升级成功以前,不搞乱node_modules目录。这时候就要祭出git worktree这个命令了react
λ 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 之后,你想怎么升级nod_modules,都不会影响到原来工做目录下的node_modules 。git
在新的工做目录下,你完成全部的升级工做,测试一切无误之后,就能够commit了,这样生成一个新的branch,并且这个用于测试升级新工做目录也能够完全删除,不用担忧,代码已经所有进了branch。npm
会到原来的工做目录,你能够用git merge upslider 把修改的代码所有合并到当前工做目录。bash
这样利用全新目录来升级测试node_modules下的新依赖,彻底不打扰到正常工做目录。ide