2014-06-25 167 views
40

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

/foo/bar 

文件夹被检查:它的存在和它的文件被忽略。 gitignorecommit特德。但是,我有一个文件,我在这里进行了修改,并位于我的bar文件夹中。当我输入

git status 

我的git bash我看到应该被忽略的文件。可能是什么原因,我怎样才能成功地忽略我的酒吧文件夹内的所有文件?

请注意,这些文件先前被同一行忽略,但我不得不暂时删除该行,以便commit服务器上的某些内容。在commit之后,我把这条线放回gitignore。这是前一阵子,但现在我已经观察到这些文件将在git status。我希望能够修改忽略的文件,而不会出现在git status中。

+0

将来,您不需要修改忽略添加忽略的内容。 'git add -f ignored-file'会添加一个文件,即使它在你的忽略中。 – Chris

+0

'git status foo/bar/file-that-should-be-ignored'给出了什么? – Chris

+0

如果发生任何更改,应该忽略的文件。我明显错过了一些东西,但根据我的知识,在这种情况下,git状态列表应该是空的,前提是/ goo/bar存在于.gitignore –

回答

96

我猜这个文件夹已被检入git之前?尝试运行git rm --cached <folder>并再次检查。

编辑:代码中有一个小错误。解决方案是: git rm -r --cached <folder> 但是,这个答案已经让我找到了解决方案,所以我会接受它。

更新:需要-r

+0

这将从(当前版本的)回购库中完全删除该文件夹。 OP希望该文件夹在那里,但不应跟踪新的更改 – Gareth

+0

不幸的是,我必须删除接受。此解决方案在推送时删除了远程版本的文件。我想设置gitignore忽略文件夹的所有文件,而不是从远程删除它。那可能吗?我已经恢复了解决方案。 –

+0

我想让远程服务器保留其文件版本 –

1

对我而言,接受的答案是解决方案的一部分,而不是整个解决方案。也许,我即将发布的其他步骤显而易见,但我首先想到了它们。这是我走上确保我.gitignore文件的步骤忽略我希望它忽略的文件夹:

  1. 承诺,你需要修复/更改任何变化。
  2. 运行以下命令:git rm -r --cached .(从git的指数,以消除一切刷新你的git仓库)
  3. 然后运行这个命令:git add .(加回一切回购)
  4. 最后,将这些改动提交使用git commit -m ".gitignore Fixed"

你可以找到的链接从那里我找到了解决办法here文章。

+0

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

+0

即使它只是一个子目录,这个解决方案也适用于我,因为我只处理一个文件。你能否详细说明为什么不推荐? – sikanderBabwani