如何告诉Git忽略除了一个子目录以外的所有内容?

274

我想忽略仓库中除了位于bin子目录下的文件之外的所有文件。我尝试将以下内容添加到我的.gitignore文件中:

*
!bin/*

然而,这并没有产生预期的效果:我在 bin/ 下创建了一个新文件,但是运行 git status 仍然显示 nothing to commit (working directory clean)

有什么建议吗?


13个回答

4

最近我必须这样做:

*
!sub-dir/
!sub-dir/*

我不确定为什么我需要两行来排除一个文件夹,但这是在我的MacOS上有效的方法。


0
对我来说,我应该不忽略父文件夹,而是使用/*来处理其中的文件和文件夹。
-- **/node_modules

++ **/node_modules/*

那么

++ !node_modules/@my-package/

0

这是我的解决方案。在我的场景中,我有一个带有以下子文件夹的文件夹:

  • 数据库(主文件夹)
    • conf(子文件夹)
    • drivers(子文件夹)
    • jars(子文件夹)
    • sql(子文件夹)

我想要从数据库文件夹中仅推送sql文件夹,因此我的.gitignore文件如下:

database/*
!database/sql/

第一行的意思是忽略数据库文件夹的所有子文件夹,第二行的意思是既然你正在忽略数据库文件夹的所有子文件夹,那么排除(不要忽略)sql子文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接