gitignore不会忽略文件夹

时间:2014-06-25 13:34:05

标签: git gitignore

在我的项目的根目录中,我有一个foo文件夹。在foo文件夹中,我有一个bar文件夹。我想忽略对bar文件夹中所有文件的所有更改。我在gitignore

中有这个
/foo/bar

检查文件夹:它存在且包含要忽略的文件。 gitignore commitbar。但是,我有一个文件,我可以在我的git status 文件夹中进行设置。当我输入

git bash

在我commit内我看到应该被忽略的文件。可能是什么原因以及如何成功忽略条形文件夹中的所有文件?

请注意,以前使用相同的行忽略了这些文件,但我必须暂时将该行删除到服务器上的commit内容。在gitignore之后,我将该行放回git status。这是不久之前,但现在我发现文件将在git status。我希望能够修改被忽略的文件,而不会出现在{{1}}。

6 个答案:

答案 0 :(得分:199)

我猜这个文件夹之前已经检查过git了吗?

运行git rm -r --cached <folder>并再次检查。

答案 1 :(得分:14)

对我来说,接受的答案是解决方案的一部分,而不是整个解决方案。也许,我即将发布的其他步骤显而易见,但我先错过了它们。这是我采取的步骤,以确保我的.gitignore文件忽略了我希望它忽略的文件夹:

  1. 提交您需要修改/更改的所有更改。
  2. 运行此命令:git rm -r --cached .(从git索引中删除所有内容以刷新git存储库)
  3. 然后运行此命令:git add .(将所有内容添加回仓库)
  4. 最后,使用git commit -m ".gitignore Fixed"
  5. 提交这些更改

    您可以找到我找到解决方案here的文章的链接。

答案 2 :(得分:3)

我遇到了这个问题,我意识到git实际上实际上忽略了文件/文件夹,但是我的代码编辑器(Visual Studio Code)只是个错误,而没有在UI边栏中正确地“灰化”。我重新启动了VSCode,它们按预期显示为灰色。

答案 3 :(得分:1)

作为accepted answer

的补充
git rm -r --cached /foo/bar/
git status

当我这样做时,终端会在该目录中显示一堆rm。因此,为了防止可能不必要地影响远程的另一次提交,我做了:

git reset HEAD *
git status

此后,它什么也没提交,当我在/foo/bar/内修改文件并执行git status时,我仍然得到nothing to commit

答案 4 :(得分:1)

我已经完成了 echo node_modules >> .gitignore,但没有奏效。

Windows 终端将文件保存在 UCS-2 LE BOM 中,而 git 似乎不接受这一点。

我用 Notepad 打开文件并用 UTF-8 编码保存

notepad save utf-8 encoding

现在可以使用了。

我认为他们需要解决这个问题,因为 echo "filetoignore" >> .gitignore 实际上看起来很方便

答案 5 :(得分:0)

我使用 echo "build" > .gitignore 在 powershell 中创建了 .gitignore。这创建了一个带有 UTF-16LE 编码的文件。 Git 无法识别该文件的内容并继续将 build 文件夹显示为未跟踪。我删除了该文件并在 geany 文本编辑器 (UTF-8) 中重新创建它,现在 git 忽略 build 文件夹。简短的搜索再次强调该 git 不喜欢 UTF-16。