我想忽略存储库中的所有文件,除了那些出现在bin子目录中的文件。我尝试将以下内容添加到.gitignore中:
bin
.gitignore
* !bin/*
然而,这并没有达到预期的效果:我在bin/中创建了一个新文件,但是执行git status仍然显示nothing to commit (working directory clean)。
bin/
git status
nothing to commit (working directory clean)
有什么建议吗?
唯一的问题是bin目录本身与bin/*模式不匹配,所以git甚至没有在bin目录中查找。
bin/*
我想到了两种解决方案。
.gitignore:
* !/bin/ !bin/*
或
* !/bin/
bin/.gitignore:
bin/.gitignore
!*
我更喜欢第二个解决方案,因为第一个解决方案不会停止忽略bin目录中的文件,这些文件位于不称为bin的子目录中。这在你的情况下可能重要,也可能不重要。
我认为更好的方法是将每个模式锚定到顶部git目录,以斜杠开始模式:
/* !/public_html !/.gitignore
而不是忽略所有的文件,它将只忽略顶级文件,而不是那些你不想忽略的目录。
这个.gitignore适用于我:
*/ /* !bin/
忽略根文件&根目录,然后取消忽略根bin目录:
/* /*/ !/bin/
通过这种方式,您可以获得所有的bin目录,包括子目录及其文件。
这里如何忽略除某个目录中“MY_SUPER_DUPER_TEMPLATE_directory”目录外的所有内容
结构:/ / MY_SUPER_DUPER_TEMPLATE_directory bitrix /模板
/* !/bitrix /bitrix/* !/bitrix/templates /bitrix/templates/* !/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory *.DS_Store *.gitignore
你必须排除到目的地途中的一切,但你必须包括目的地:
注意:这是一个排除文件(即.gitignore),所以逻辑是颠倒的。忽略tsp目录下的所有文件,除了src目录…
/* !/tsp /tsp/* !/tsp/src /tsp/src/* !/tsp/src/*.h !/tsp/src/*.cpp !/tsp/src/data.txt !/.gitignore
尝试使用最新的GIT版本。
* !*/ !/path/to/your/dir/**
试试这个不起眼的git bug。
!bin**/**
希望能有所帮助。
支持文档Git错误示例
PS:在评论之前先试一下。
在官方git医生中,其中一个例子说:
示例排除除特定目录foo/bar以外的所有内容(注意/* -没有斜杠,通配符也会排除foo/bar内的所有内容):
$ cat .gitignore # exclude everything except directory foo/bar /* !/foo /foo/* !/foo/bar
关于前导斜杠的解释:在gitignore中什么时候使用前导斜杠。
我最近不得不这么做:
* !sub-dir/ !sub-dir/*
我不知道为什么我需要两行来排除一个文件夹,但这对我和macos都是有效的。
这是我的解决方案。在我的场景中,我有一个文件夹,子文件夹如下:
从数据库文件夹中,我只想推sql文件夹,所以我的.gitignore文件如下:
database/* !database/sql/
第一行简单地说忽略数据库文件夹的所有子文件夹,第二行意味着因为你忽略了数据库文件夹的所有子文件夹排除(不忽略)sql子文件夹
派对来晚了,但没有一个答案对我有效。这一个是:
* !bin !bin/**
对我来说,我不应该忽略父文件夹,而是使用/*忽略其中的文件和文件夹
/*
-- **/node_modules ++ **/node_modules/*
然后
++ !node_modules/@my-package/