gitignore 不会忽略文件夹

问题描述 投票:0回答:8

在我的项目的根目录中,我有一个

foo
文件夹。在
foo
文件夹内,我有一个
bar
文件夹。我想忽略对
bar
文件夹中所有文件的所有更改。我的
gitignore
里有这个:

/foo/bar

检查文件夹:它存在并且包含要忽略的文件。

gitignore
commit
ted。但是,我有一个文件可以进行修改,并且位于我的
bar
文件夹中。当我打字时

git status

在我的

git bash
中我看到了应该被忽略的文件。可能是什么原因以及如何成功忽略 bar 文件夹中的所有文件?

请注意,之前使用同一行忽略这些文件,但我必须暂时将该行删除到服务器上的某些内容。在

commit
之后,我将线放回
commit
。这是不久前的事了,但现在我发现这些文件将位于
gitignore
中。我希望能够修改被忽略的文件,而不会让它们出现在
git status
中。
    

git gitignore
8个回答
658
投票

运行

git status

并再次检查。

    


115
投票
git rm -r --cached <folder>

文件忽略我希望它忽略的文件夹而采取的步骤:


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

找到该文章的链接。


23
投票

我已经完成了

git commit -m ".gitignore Fixed"

,但没有成功。

Windows 终端将文件保存在 

echo node_modules >> .gitignore

中,而 git 似乎不接受这一点。

我用 

UCS-2 LE BOM

打开文件并用

Notepad
编码保存

现在可以使用了。

我认为他们需要解决这个问题,因为

UTF-8

实际上似乎是一件很方便的事情

    


18
投票


11
投票
已接受答案的补充

echo "filetoignore" >> .gitignore

当我这样做时,终端会显示该目录中文件的一堆 
git rm -r --cached /foo/bar/ git status

。因此,为了防止另一次提交可能不必要地影响远程,我做了:


rm

之后,它没有说什么要提交,当我修改
git reset HEAD * git status

中的文件并执行

/foo/bar/
时,我仍然得到
git status
    


6
投票
nothing to commit

在 powershell 中创建了 .gitignore。这将创建一个使用 UTF-16LE 编码的文件。 Git 无法识别该文件的内容,并继续将

echo "build" > .gitignore
文件夹显示为未跟踪。我删除了该文件并在 geany 文本编辑器 (UTF-8) 中重新创建了它,并且 git 现在忽略了
build
文件夹。简短的搜索再次表明 git 不喜欢 UTF-16。
    


1
投票

编辑:

证明:

创建一个名为 test-gitignore 的文件夹
  1. 转到该文件夹并初始化 git 存储库:
  2. build
  3. 创建一个 .env 文件并在其中添加任何内容
  4. 现在您想忽略该 .env 文件,因此您应该做的是在同一目录中创建一个
  5. git init
  6. 文件,其内容为:
    .gitignore
    。但创建 .gitignore 文件的方式很重要。如果您使用 powershell 的 echo: "echo >> .gitignore" 创建它,您的 .env 将不会被忽略,因为 git 需要 utf-8 编码的 .gitignore 文件。
    .env
    
    
  7. 这就是为什么使用 vscode 或任何确保 utf-8 编码的工具创建文件很重要。


0
投票

In PowerShell, the default encoding used by the echo command for writing text to a file is Unicode (UTF-16LE). This means that when you use the echo command to append text to a file using >>, the text will be written in UTF-16LE encoding.

(其中 .git 在此文件夹中 ^)

并且您只将 mediafiles/article_images/ 添加到您的 .gitignore 文件中,这不会忽略 mediafiles/article_images 部分相对路径。

您必须在 .gitignore 中添加完整的相对路径才能正确忽略它:

myproject/mediafiles/article_images

© www.soinside.com 2019 - 2024. All rights reserved.