我想忽略我的存储库中的所有文件,除了bin
子目录中的文件。我尝试将以下内容添加到.gitignore
:
*
!bin/*
但这没有达到预期的效果:我在bin/
内创建了一个新文件,但git status
仍显示nothing to commit (working directory clean)
。
有什么建议吗?
答案 0 :(得分:250)
这会忽略根文件&根目录,然后取消忽略根bin目录:
/*
/*/
!/bin/
这样您就可以获得所有bin目录,包括子目录及其文件。
答案 1 :(得分:91)
这里如何忽略一些目录中的所有内容“ MY_SUPER_DUPER_TEMPLATE_directory ”
结构:/ bitrix / templates / MY_SUPER_DUPER_TEMPLATE_directory
/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore
答案 2 :(得分:52)
您必须在前往目的地的路上排除所有内容,但必须包含目的地:
注意:这是一个排除文件(即.gitignore),因此逻辑被反转。忽略除tsp目录之外的所有内容,忽略tsp目录中的所有内容,除了src目录...
/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore
答案 3 :(得分:37)
唯一的问题是bin
目录本身与bin/*
模式不匹配,因此git甚至不在bin
目录中。
有两种解决方案可供考虑。
.gitignore
:
*
!/bin/
!bin/*
或
.gitignore
:
*
!/bin/
bin/.gitignore
:
!*
我更喜欢第二种解决方案,因为第一种解决方案不会停止忽略bin
目录中未被称为bin
的子目录中的文件。在您的情况下这可能或不重要。
答案 4 :(得分:15)
来自官方git doc,其中一个例子说:
排除除特定目录foo / bar之外的所有内容的示例(注意/ * - 没有斜杠,通配符也会排除foo / bar中的所有内容):
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
有关前导斜杠的说明:When to use leading slash in gitignore。
答案 5 :(得分:11)
我认为更好的方法是通过使用斜杠启动模式将每个模式锚定到顶级git目录:
/*
!/public_html
!/.gitignore
它不会忽略所有文件,而只会忽略顶级文件,而不是您不想忽略的目录中的文件。
答案 6 :(得分:11)
请尝试使用最新的GIT版本。
*
!*/
!/path/to/your/dir/**
答案 7 :(得分:7)
这.gitignore
对我有用:
*/
/*
!bin/
答案 8 :(得分:5)
答案 9 :(得分:0)
我最近必须这样做:
*
!sub-dir/
!sub-dir/*
我不确定为什么需要两行来排除一个文件夹,但这对我和macos都有效。
答案 10 :(得分:0)
聚会迟到了,但没有一个答案“开箱即用”对我有用。这个是:
*
!bin
!bin/**
答案 11 :(得分:-1)
这是我的解决方案。在我的场景中,我有一个带有子文件夹的文件夹,如下所示:
从 database 文件夹中,我只想推送 sql 文件夹,这样我的.gitignore
文件如下:
database/*
!database/sql/
第一行仅表示忽略 database 文件夹的所有子文件夹,第二行表示由于您忽略了 database 的所有子文件夹文件夹排除(不要忽略) sql 子文件夹