Github-gitignore文件夹不会排除所有目录文件

时间:2018-10-18 21:11:18

标签: gitignore github-desktop

我正在Windows 10上使用Github Desktop。我有一个.gitignore文件,使用它我想忽略目录中的一切,包括所有子目录。

令人沮丧的是,大多数 文件都被排除在外,但是我仍然得到了一些我似乎无法忽略的随机文件。

我有一个目录,例如My Dir/Sub-dir,我想忽略。我也想忽略所有扩展名的文件,例如*.swf。因此,我写了这个.gitignore文件:

My Dir/Sub-dir

*.swf

但是,当我回到Github Desktop时,仍然得到两个类似于列表中的以下文件:

My Dir/Sub-dir/anotherdir/randomfile.xml
My Dir/Sub-dir/animation.swf

这是怎么回事?这是错误吗?还是我错过了什么?

编辑:

我尝试过的其他替代方法.gitignore是:

My*Dir/Sub-dir
*.swf

My\ Dir/Sub-dir
*.swf

My Dir/Sub-dir/
*.swf

/My Dir/Sub-dir
*.swf

编辑:

因此,我在文件上尝试了git rm --cached <file>命令,该命令一直有效-直到其中一个文件再次更改。 Github Desktop然后再次说他们需要更新。

p.s。可能是因为它们以某种方式在master分支中建立了索引,因为我目前在另一个分支中。这会导致吗?而且,如果是这样,我将如何从所有分支中消除这些文件?

2 个答案:

答案 0 :(得分:1)

要忽略特定目录下的所有树,请在目录后加上斜杠:

# Ignore directory at all levels, even if the directory is nested under other directories
My Dir/Sub-dir/
# Ignore the directory only if it exists at the root of your repository
/My Dir/Sub-dir/
# Ignore the sub-directory, no matter where it appears within your repository
Sub-dir/
# Ignore all swf files
*.swf

如果继续遇到困难,则可能是您要忽略的文件已被git索引(通过git add命令)。如果尚未提交文件,则可以使用git reset -- 'My Dir/Sub-dir/'将它们从索引中删除。如果文件已提交,则可以使用git rm --cached <file>将它们从索引中删除。

答案 1 :(得分:0)

我猜空白可能是个问题。试试

My\ Dir/Sub-dir

My*Dir/Sub-dir

这可能是一个很好的参考.gitignore entire directory with whitespace in name