忽略node_modules文件夹的方法——使用.gitignore

8

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

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

.gitignore

node_modules/

当然,因为git init之前添加了node_modules,所以它仍然被识别为要跟踪的目录。
因此,我删除了它,并使用以下命令(根据类似问题的建议):
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/

为什么?

这是你使用的确切顺序吗?我无法复现这个结果。 - Dan Lowe
@DanLowe 是的,我已经反复检查了两遍甚至三遍,但是什么都没有,它不起作用。这对我来说看起来很荒谬。 - Carlo
我也无法重现这个问题。尝试了以下步骤:git init; echo "Myfile" > myfile; mkdir node_modules && echo "module" > node_modules/module.txt; git commit -m "init"; echo "node_modules" > .gitignore; rm -rf node_modules/; git rm -r --cached .; git add .; git commit -m ".gitignore should now work"; mkdir node_modules; echo "module" > node_modules/mod.txt;在运行这些命令后,git status 显示 "On branch master nothing to commit, working tree clean"。 - Bless
@bless 刚刚尝试了和你一样的操作,但是在 git status 后仍然把 node_modules/ 当作未跟踪。 - Carlo
对我来说,git rm -r --cached . 是解决方案。运行此命令后,.gitignore 中的 node_modules 就可以正常工作了。 - Felix Htoo
3个回答

9
这个问题下面,有很多可能修复.gitignore文件不能正常工作的方法。
在这种情况下,问题是(曾经是).gitignore文件的编码是UNICODE而不是ASCII。

7
尝试以下步骤:
  • 移除 .gitignore 中的 node_modules 并保存

  • 删除 node_modules 文件夹(或将其移动到项目目录之外)

  • 提交更改(会有大量来自 node_modules 的删除)此步骤将从源代码控制中删除文件。

  • 再次将 node_modules 加入到 .gitignore 中

  • 提交 gitignore

  • 重新运行 npm install 或还原 node_modules 目录。


1
仍然不能工作,这太荒谬了,看起来像是一个非常愚蠢的问题。 - Carlo
对我有用。小心.gitignore文件路径。 - Miktad Tahir Durak
不错!我克隆了一个仓库,它跟踪了node_modules,但是当我检查.gitignore时,它说正在忽略node_modules。我想有人在我的情况下提交了node_modules,然后将其添加到.gitignore中,这不是 git 的理想顺序。 - KeshavDulal

-1
不要忘记将.gitignore也添加到git中
git add .gitignore

当你执行git add .命令时,它会自动添加所有文件。 - Hritik Sharma
这并没有回答问题。一旦你拥有足够的声望,你就可以评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - zerocukor287

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接