我有两个分支,一个叫“gh-pages”,另一个叫“master”分支。两者都有像“node_modules”这样的单独文件夹,但它们完全不同。他们没有成功!
所以退房时,例如“gh-pages”分支如下
git checkout gh-pages
我需要一种方法来指定Git不应该只从“master”分支中删除(但保存)所有被跟踪的文件和文件夹(例如“node_modules”文件夹)。然后从“gh-pages”分支以及所有未跟踪的文件和文件夹加载所有跟踪的文件和文件夹。
是否有一种简单的方法,或者我是否真的需要为每次结帐删除未跟踪的文件和文件夹,以便两者不会进入十字架?
答案 0 :(得分:2)
我也遇到了这个问题。我的解决方法是使用git worktree
。为每个分支创建链接的工作树,将node_modules放在其中,而不是主工作树。
看到这个类似的问题: Switch node_modules folder when I change git branch
本文解释了为什么它优于git clone
:https://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
。下面是我如何逐步做到这一点。
将 gh-pages
分支创建为孤立分支。
git checkout --orphan gh-pahes
从 gh-pages
分支创建一个 git 工作树。
git worktree add <worktree_name> gh-pages
现在将创建一个名为 <worktree_name>
的新目录。 cd
到该文件夹并运行 npm install
。将目录更改到此文件夹等同于签出 gh-pages
分支。
现在您可以开发您的 Github Pages 站点并将其推送到远程的 gh-pages
分支以进行部署。