我想忽略存储库中的所有文件,除了那些出现在bin子目录中的文件。我试着在我的.gitignore中添加以下内容:

*
!bin/*

然而,这并没有达到预期的效果:我在bin/中创建了一个新文件,但是执行git status仍然没有显示任何要提交的内容(工作目录清洁)。

有什么建议吗?


当前回答

迟到了,但没有一个答案对我来说是“开箱即用”的。这一个是:

* 
!bin
!bin/**

第一行忽略了所有内容 第二行包含回“bin”目录本身 最后一行包含了“bin”目录的全部内容,不管它是如何嵌套的(注意双星号),

其他回答

你必须排除到目的地途中的一切,但你必须包括目的地:

注意:这是一个排除文件(即.gitignore),所以逻辑是颠倒的。忽略tsp目录下的所有文件,除了src目录…

/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore

从官方git文档中,有一个例子是这样说的:

示例排除除特定目录foo/bar以外的所有内容(注意/* -没有斜杠,通配符也会排除foo/bar内的所有内容):

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

关于前导斜杠的解释:在gitignore中什么时候使用前导斜杠。

忽略根文件和根目录,然后取消忽略根bin目录:

/*
/*/
!/bin/

通过这种方式,您可以获得所有的bin目录,包括子目录及其文件。

试试这个不起眼的git bug。

!bin**/**

希望能有所帮助。

支持文档git错误示例

PS:在评论之前先试一下。

这个。gitignore对我有用:

*/
/*
!bin/