.gitignore没有忽略目录

97

我做了什么:

我认为github gui中的一些奇怪配置导致了这个问题,阻止我能够轻松地使用命令行或者甚至是git-bash。

最终,我卸载了github和git,然后只重新安装了适用于Windows的git。现在我已经可以通过命令行运行所有操作(除了ssh,我还是从git-bash运行它)。比github gui更加简单易用和可靠。

感谢mu 無花费时间试图解决此问题。我并没有使用他的答案,但如果我不需要重新安装git,他的回答就是我需要的。


我正在使用本地机器上的github gui。我刚刚注意到我即将提交的版本会更新所有最近更新的node模块。我已经在.gitignore中设置忽略整个node_modules/目录。

我不确定该怎么办。我在.gitignore中包含的所有文件类型都被忽略了。似乎只有目录被忽略了。

这是我的.gitignore文件:

#################
## Sublime Text
#################

*.sublime-project
*.sublime-workspace

#################
## Images
#################

*.jpg
*.jpeg
*.png
*.gif
*.psd
*.ai

#################
## Windows detritus
#################

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac crap
.DS_Store

#################
## Directories
#################

dev/
cms/core/config/
node_modules/

“git status”的输出是什么?将其添加到问题中。。。 - Anshul Goyal
1
我对那方面一无所知。 - hal
打开终端,进入代码库并运行 git status 命令。无论输出结果如何,都将其放在这里。 - Anshul Goyal
我使用的是Windows系统。因此,终端上的git命令无法运行。"git"不被识别为内部或外部命令,可执行程序或批处理文件。 - hal
显示剩余5条评论
11个回答

327

由于node_modules目录已经作为存储库的一部分被跟踪,所以.gitignore规则不会适用于它。

您需要使用以下命令从git中取消跟踪该目录:

git rm -r --cached node_modules
git commit -m "removing node_modules"

您可以在 git-bash 中运行上述 2 命令。

之后,.gitignore 规则将忽略该目录。

请注意,这将从其他存储库中删除 node_modules 目录,一旦您拉取更改。只有原始存储库仍将在那个提交中保留 node_modules 文件夹。


1
那并不是打错了。Node创建的目录是 node_modules/ - hal
如何在没有命令行的情况下取消跟踪?或者如何在 Windows 机器上访问 Git 命令行而没有 Bash? - hal
我无法跳转到该路径。我的目录中有所有工作仓库。它只会列出其中一个仓库,而不是我要修复的那个。 - hal
我在包含目录中使用了 ls 命令,但它只列出了一个子目录,实际上有几个。但我会尝试一下。或者直接通过 SSH 登录到此部署的生产服务器上,在那里进行操作。 - hal
好的,记得这个命令会从除了你运行该命令的那个代码库/分支之外的所有其他代码库/分支中删除 node_modules - Anshul Goyal
显示剩余11条评论

33
与Zach类似,我也使用了echo "node_modules/" >> .gitignore。问题是它用UCS-2 LE BOM编码创建了文件。使用notepad++将编码更改为UTF-8,然后node_modules就被忽略了。

进入图像描述


1
谢谢!这真的让我很沮丧。 - be_green
这个答案应该有更多的赞,因为问题和解决方案非常出人意料。谢谢! - Kazimierz Jawor
我就是这样做的,真是糟糕。 刚刚使用VS Studio删除并重新创建了。谢谢@Scotty.NET - JD Byrnes

21
如果文件已经被跟踪,则.gitignore文件将不会覆盖此操作。您需要使用git rm --cached <files>
https://www.kernel.org/pub/software/scm/git/docs/git-rm.html上查看有关git rm的完整详细信息。我早期在使用git时也遇到过这种情况,它并不像我预期的那样。

2
如果我们忽略原帖中的错别字问题,这篇回答对于那些通过搜索到达此处的人来说更为全面。 - Priya Ranjan Singh

4
如果你正在处理 node 项目,我推荐使用以下这个 .gitignore 文件:
# See http://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
node_modules

# testing
coverage

# production
build

# misc
.DS_Store
.env
npm-debug.log

3
我遇到了这个问题。不知何故,在生成文件时(使用echo“node_modules”> .gitignore),它在文件开头插入了一个垃圾字符(我指责powershell)。
因此,如果您遇到此问题,请尝试删除您的.gitignore并重新开始。

似乎是PowerShell的问题,因为这里发生了同样的事情。 - Justas Sam

0

以上的解决方案都对我没用,并且我不知道为什么。

最终我做的是:

  1. 将项目文件夹复制一份,以便不使用主文件夹
  2. 然后删除.git和.gitignore文件(CMD+SHIFT+DOT会显示隐藏文件)
  3. 在根目录下添加.gitignore文件,并将node_modules加入其中
  4. 再次使用git init初始化git
  5. 再次使用git remote add origin your_repo添加远程代码库
  6. git add .
  7. git commit -m 'added ignore file'
  8. git push -u origin master

然后继续使用这个新目录工作。 请注意,对于我来说,这是一个解决方案,因为这是我的第一个提交。


0

只需通过rm -rf .git从您的文件夹中删除初始git配置。使用创建的.gitignore文件并添加要添加的所有文件。然后使用git init重新初始化您的文件夹中的git配置。 这将解决您的问题。


0

我的解决方法是将"node_modules"添加到.gitignore中。

backend\node_modules
frontend\your_proyect\node_modules
node_modules

-1

尝试使用这个命令,它将解决你的问题:

git config core.ignorecase true

-1

我在任何地方都没有看到这个帖子,也许这是显而易见的,直到我忘记了,但是在gitignore行的末尾添加注释实际上并不是注释!注释应该单独成行!

# .gitignore (this is a comment)
my_bad_dir/ # This is not a comment, and my_bad_dir/ won't be ignored
~$ man gitignore | grep comment
       •   以 # 开头的行作为注释

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