使用 .gitignore 忽略 node_modules

Posted

技术标签:

【中文标题】使用 .gitignore 忽略 node_modules【英文标题】:Ignoring node_modules using .gitignore 【发布时间】:2018-06-22 18:41:46 【问题描述】:

我使用 npm 开始了一个项目,添加了一些依赖项,然后初始化了存储库 usign git init

我希望目录 node_modules 被 git 忽略,所以我像这样将它添加到 .gitignore 文件中。

.gitignore

node_modules/

当然因为node_modules是在git init之前添加的,所以还是被识别为要跟踪的目录。

所以我删除了它,使用了以下命令(针对类似问题的建议)

git rm -r --cached .
git add .
git commit -m ".gitignore should now work"

然后使用npm install重新安装npm依赖

在此之后,我希望目录 node_modules 最终被忽略。 相反,如果我输入 git status 我会得到

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    node_modules/

为什么?

【问题讨论】:

这正是您使用的序列吗?我无法重现此结果。 @DanLowe 是的,我已经检查了两次和三次,但是没有,它不起作用。这对我来说看起来很荒谬。 我也无法重现这个。尝试了以下步骤:git init; echo "Myfile" &gt; myfile; mkdir node_modules &amp;&amp; echo "module" &gt; node_modules/module.txt; git commit -m "init"; echo "node_modules" &gt; .gitignore; rm -rf node_modules/; git rm -r --cached .; git add .; git commit -m ".gitignore should now work"; mkdir node_modules; echo "module" &gt; node_modules/mod.txt; git status 在运行这些后给出“在分支主机上没有提交,工作树干净”。 @bless 刚刚尝试再次执行与您相同的操作,但在 git status 之后仍然没有跟踪 node_modules/ git rm -r --cached . 是我的解决方案。运行此命令后,.gitignore 中的node_modules 运行良好。 【参考方案1】:

在this question 下,有许多可能修复.gitignore 文件无法正常工作的方法。

在这种情况下,问题是(曾经).gitignore 文件的编码是 UNICODE 而不是 ASCII

【讨论】:

【参考方案2】:

尝试以下方法:

从 .gitignore 中移除 node_modules 并保存

删除 node_modules(或将其移至项目目录之外的某个位置)

提交更改(将从 node_modules 中删除大量内容)此步骤将从源代码管理中删除文件。

再次将node_modules添加到.gitignore

提交 gitignore

重新运行 npm install 或恢复 node_modules 目录。

【讨论】:

还是不行,这太可笑了,看起来是个很蠢的问题 为我工作。注意 .gitignore 文件路径。

以上是关于使用 .gitignore 忽略 node_modules的主要内容,如果未能解决你的问题,请参考以下文章

解决git中将要忽略的文件加入.gitignore无效的问题

如何创建.gitignore文件,忽略git不必要提交的文件

使用 .gitignore 忽略 node_modules

gitignore忽略处理

使用 .gitignore来忽略某些文件转

使用 .gitignore 忽略 Git 仓库中的文件