解決git 不同branch 下node_moudes不同步的問題

無心之柳.NET發表於2018-07-13

做nodejs開發,或者vue react等開發的同學,在使用git 做版本管理的時候肯定碰到過這個問題。
按常規做法node_modules 肯定是被新增到.gitignore中不需要被提交的

但是在分支切換的時候就會遇到問題 ,經如你在dev分支下就是升級了某個依賴到最新和版本,這時node_modules下所有的檔案被更新,這時你如果切會master分支,修改一個小錯誤 ,就會發現,由於node_modules 下的依賴已經是新版本,但是master中還是用的老版本,程式碼執行就不正常了,所以你不得不npm install一下,記所有依賴回到原來的版本,master正常了,再切回dev,依賴又不對了,又要npm install 一次,很是麻煩。

特別最遇到某個依賴重大更新,可能要修改很多程式碼的時候,你希望在徹底升級成功之前,不搞亂node_modules目錄。這時候就要祭出git worktree這個命令了

λ 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 。

在新的工作目錄下,你完成所有的升級工作,測試一切無誤以後,就可以commit了,這樣生成一個新的branch,而且這個用於測試升級新工作目錄也可以徹底刪除,不用擔心,程式碼已經全部進了branch。

會到原來的工作目錄,你可以用git merge upslider 把修改的程式碼全部合併到當前工作目錄。

這樣利用全新目錄來升級測試node_modules下的新依賴,完全不打擾到正常工作目錄。

相關文章