gitignore不忽略文件夹

gitignore不忽略文件夹,git,gitignore,Git,Gitignore,在我项目的根目录中,我有一个foo文件夹。在foo文件夹中,我有一个bar文件夹。我想忽略对我的bar文件夹中所有文件的所有更改。我的gitignore中有这个: /foo/bar 该文件夹已被选中:它存在并且有要忽略的文件gitignore是committed。但是,我有一个文件,我在其中制作了一个moify,它位于我的bar文件夹中。我打字的时候 git status 在我的gitbash中,我看到了应该被忽略的文件。原因是什么?我如何成功忽略我的bar文件夹中的所有文件 请注意,这些文

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

/foo/bar
该文件夹已被选中:它存在并且有要忽略的文件
gitignore
commit
ted。但是,我有一个文件,我在其中制作了一个moify,它位于我的
bar
文件夹中。我打字的时候

git status
在我的
gitbash
中,我看到了应该被忽略的文件。原因是什么?我如何成功忽略我的bar文件夹中的所有文件


请注意,这些文件以前是用同一行忽略的,但我必须临时删除这一行,以
commit
something-on-server。在
commit
之后,我将该行放回到
gitignore
中。这是很久以前的事了,但现在我观察到文件将处于
git状态
。我希望能够修改被忽略的文件,而不让它们出现在
git状态中

我猜这个文件夹以前已经签入git了


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

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

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

  • 你可以从我找到解决方案的地方找到文章的链接。

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

    作为对

    当我这样做时,终端会为该目录中的文件显示一组
    rm
    。因此,为了防止可能对remote造成不必要影响的另一次提交,我采取了以下措施:

    git reset HEAD *
    git status
    

    在那之后,它没有什么要提交的,当我修改
    /foo/bar/
    中的文件并执行
    git状态时,我仍然没有什么要提交的
    我使用
    echo“build”>.gitignore在powershell中创建了.gitignore。这创建了一个UTF-16LE编码的文件。Git无法识别文件的内容,并继续将
    build
    文件夹显示为未跟踪。我删除了文件并在geany文本编辑器(UTF-8)中重新创建了它,git现在忽略了
    build
    文件夹。一个简短的搜索表明git不喜欢UTF-16。

    将来,您不需要修改忽略来添加忽略的内容
    git add-f ignored file
    将添加一个文件,即使该文件位于您的ignores中。
    git status foo/bar/file应该被忽略的是什么?
    给出了在发生任何更改时应该被忽略的文件。我显然遗漏了一些东西,但据我所知,如果在.gitignore中存在/foo/bar,那么git状态列表应该是空的。听起来好像git实际上正在跟踪该文件。它一定是在某个时候添加到存储库中的。您可以通过git log foo/bar/文件查看其历史记录,该文件应被忽略
    。如果它不应该是存储库的一部分,那么应该使用
    git rm--cached foo/bar/file删除它,该文件应该被忽略
    ,然后按照下面Reck的建议提交(尽管我只会在文件上执行,而不是整个文件夹)。这将(a)从Git中删除该文件,(b)将该文件保存在本地副本中,以及(c)在其他人
    fetch
    pull
    新提交时删除该文件。可能的重复操作将从(当前版本的)repo中完全删除该文件夹。OP希望文件夹在那里,但新的更改不应该被跟踪。不幸的是,我必须删除accept。此解决方案在推送时删除了文件的远程版本。我想将gitignore设置为忽略文件夹的所有文件,而不是将其从远程删除。可能吗?我已经还原了解决方案。
    git update index——假设未更改
    也许?@Lajos你不应该只是修复了他的错误,而不是在那里添加这个令人困惑的“编辑”评论吗?@Cawas,因为这个网站是关于知识共享的,答案是:不。接受包含错误的答案是错误的。这个-r不是可选的。基于原始问题,这不是一个可行的解决方案@lagos arpad特别询问了一个子目录,而不是整个项目。您的解决方案从git存储库的根级别删除所有内容,这不是处理此问题的推荐方法。即使它只是一个子目录,此解决方案对我来说也很有效,因为我只处理一个文件。你能详细解释一下为什么不推荐吗?你所处理的是无关紧要的。这不是问题的答案,正如另一个答案所指出的那样,这是潜在的危险。这将删除远程回购协议中您不一定需要的内容。这完全符合我的工作需要。奇怪的是,最近的提交显示了以前的提交,而不是“.gitignore Fixed”!但我的问题是solved@justinhartman,您可以通过替换来指定文件夹名称。这里也一样:VS代码v1.30.2(用户)我也一样。非常感谢您提供此解决方案!我想知道为什么我的.gitignore无法工作,直到我尝试重新启动VS代码。我使用的是Visual Studio代码v1.44.2。这只是retu
    git reset HEAD *
    git status