使用不同的node_modules文件夹进行git checkout

时间:2016-05-09 11:36:06

标签: git git-branch git-checkout

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

所以退房时,例如“gh-pages”分支如下

git checkout gh-pages

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

是否有一种简单的方法,或者我是否真的需要为每次结帐删除未跟踪的文件和文件夹,以便两者不会进入十字架?

3 个答案:

答案 0 :(得分:2)

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

看到这个类似的问题: Switch node_modules folder when I change git branch

本文解释了为什么它优于git clonehttps://spin.atomicobject.com/2016/06/26/parallelize-development-git-worktrees/

答案 1 :(得分:1)

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

git checkout

  

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

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

答案 2 :(得分:0)

为此,我还必须选择 git worktree。下面是我如何逐步做到这一点。

  1. gh-pages 分支创建为孤立分支。 git checkout --orphan gh-pahes

  2. gh-pages 分支创建一个 git 工作树。
    git worktree add <worktree_name> gh-pages

  3. 现在将创建一个名为 <worktree_name> 的新目录。 cd 到该文件夹​​并运行 npm install。将目录更改到此文件夹等同于签出 gh-pages 分支。

  4. 现在您可以开发您的 Github Pages 站点并将其推送到远程的 gh-pages 分支以进行部署。