gitignore不会忽略文件夹

Laj*_*pad 109 git gitignore

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

/foo/bar
Run Code Online (Sandbox Code Playgroud)

检查文件夹:它存在并且具有要忽略的文件.gitignorecommit特德.但是,我有一个文件,我在那里做了一个moification,并在我的bar文件夹中.当我输入

git status
Run Code Online (Sandbox Code Playgroud)

在我的内部,我git bash看到应该被忽略的文件.可能是什么原因以及如何成功忽略栏文件夹中的所有文件?

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

Rec*_*eck 265

我猜这个文件夹之前已经被检入git了?

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

  • `git update-index --assume-unchanged <folder>`也许吧? (9认同)
  • 这将从(当前版本的)存储库中完全删除该文件夹。OP 希望文件夹在那里,但不应跟踪新的更改 (3认同)
  • @Lajos你不应该只修复他的错误而不是在那里添加这个令人困惑的"编辑"评论吗? (3认同)
  • @Cawas,因为这个网站是关于知识共享的,所以答案是:不。接受包含错误的答案具有误导性。-r 不是可选的。 (2认同)

Abr*_*ham 26

这解决了它

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

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

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

记事本保存utf-8编码

现在可以了。

我认为他们需要解决这个问题,因为echo "filetoignore" >> .gitignore实际上似乎是一件很方便的事情

  • 将 Powershell 的输出重定向到 gitignore 时,我遇到了同样的问题。例如 `Get-ChildItem 。-Filter *.csv -recurse &gt;&gt; .gitignore` 在我将编码更改为 UTF-8 之前不起作用。是的,我知道忽略所有 csv 文件可以直接通过 .gitignore 实现:这只是一个例子;) (2认同)

sik*_*ani 23

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

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

你可以找到链接,从那里我找到了解决方案的文章在这里.

  • 这不是基于原始问题的可行解决方案。@lagos-arpad 专门询问了一个子目录而不是整个项目。您的解决方案从 git 存储库的根级别删除了所有内容,这不是处理此问题的推荐方法。 (2认同)

Mar*_*son 13

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


lea*_*ore 6

作为已接受答案的补充

git rm -r --cached /foo/bar/
git status
Run Code Online (Sandbox Code Playgroud)

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

git reset HEAD *
git status
Run Code Online (Sandbox Code Playgroud)

在那之后,它什么也没说提交,当我修改里面的文件/foo/bar/并做一个git status我仍然得到nothing to commit.

  • 这让我回到了开始的地方(问题) (2认同)

Din*_*ale 6

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