git checkout 使用不同的 node_modules 文件夹

use*_*654 5 git git-checkout git-branch

我有两个分支,一个叫做“gh-pages”,另一个叫做“master”分支。两者都有像“node_modules”这样的单独文件夹,但它们完全不同。他们没有被追踪!

因此,当检查例如“gh-pages”分支如下

git checkout gh-pages
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来指定 Git 不仅应删除(但保存)所有已跟踪的文件和文件夹(如“master”分支中的“node_modules”文件夹)。然后从“gh-pages”分支加载所有跟踪的文件和文件夹以及所有未跟踪的文件和文件夹。

有没有一种简单的方法,或者我真的需要为每次结帐删除未跟踪的文件和文件夹,以便两者不会交叉?

周汉成*_*周汉成 5

我也遇到了这个问题。我的解决方法是使用git worktree. 为每个分支创建链接的工作树,将 node_modules 放入其中而不是主工作树。

看到这个类似的问题: 当我更改 git branch 时切换 node_modules 文件夹

这篇文章解释了为什么它比git clonehttps : //spin.atomicobject.com/2016/06/26/parallelize-development-git-worktrees/


Adi*_*ngh 1

这在 git 中是不可能的。根据定义,未跟踪的文件是文件系统的一部分,而不是git's版本控制的一部分。

git 结账

更新工作树中的文件以匹配索引或指定树中的版本。如果没有给出路径,git checkout 也会更新 HEAD 以将指定分支设置为当前分支。

因此,当您签出一个分支时,您只会获得该分支中文件的工作副本。由于未跟踪的文件node_modules不属于任何特定分支,而是本地文件系统的一部分,因此它将保持原样。