Github - gitignore 文件夹不排除所有目录文件
Posted
技术标签:
【中文标题】Github - gitignore 文件夹不排除所有目录文件【英文标题】:Github - gitignore folder doesn't exclude all directory files 【发布时间】:2019-03-23 18:32:28 【问题描述】:我在 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
s 是:
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 再次说他们需要更新。
附言可能是他们以某种方式在主分支中被索引,因为我目前在另一个分支中。这会导致吗?如果是这样,我将如何从所有分支中删除这些文件?
【问题讨论】:
【参考方案1】:我猜空格可能是个问题。试试
My\ Dir/Sub-dir
或
My*Dir/Sub-dir
这可能是一个很好的参考.gitignore entire directory with whitespace in name
【讨论】:
是的,这很好。我在网上找到了这个建议并尝试了它。不幸的是,它仍然没有工作......:-/我将编辑我的问题。【参考方案2】:要忽略特定目录下的所有树,请将尾部斜杠附加到目录:
# 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>
从索引中删除它们。
【讨论】:
做到了!它只是被缓存了。因此,从 GitHub Desktop (***.com/questions/34565238/…) 找到我的 git install 后,我能够将其从索引中删除。 对不起,我认为它有效..查看我的第二次编辑。也许你会有一个想法。 @Codesmith 从索引中删除它后(通过git rm --cached
)你提交删除了吗?
澄清一下,如果有要删除的文件提交到存储库(不删除本地副本),您可以使用git rm --cached
暂缓从存储库中删除该文件。您仍然需要提交该更改才能真正从存储库中删除该文件,并且在进行此提交之前,您可能会看到您的 env(GitHub 桌面)在进行更改时自动重新添加它。另一方面,如果文件还没有提交,那么git reset -- <file>
就可以了。
还只是添加一个注释以澄清上述答案,.gitignore
仅 防止 非索引 文件被添加到 repo -- 它不会对已经被索引的文件做任何事情。以上是关于Github - gitignore 文件夹不排除所有目录文件的主要内容,如果未能解决你的问题,请参考以下文章
.gitignore排除(不忽略)二级以上目录下的文件或目录
.git/info/exclude 的对面 - 包括被 .gitignore 排除的文件
在 Pycharm 中执行 git push 时排除 csv 文件 [重复]