作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