我想忽略仓库中除了位于bin
子目录下的文件之外的所有文件。我尝试将以下内容添加到我的.gitignore
文件中:
*
!bin/*
然而,这并没有产生预期的效果:我在 bin/
下创建了一个新文件,但是运行 git status
仍然显示 nothing to commit (working directory clean)
。
有什么建议吗?
这个命令忽略根目录下的文件和目录,然后取消忽略根目录下的bin目录:
/*
/*/
!/bin/
这种方式可以获取所有的bin目录,包括其子目录和文件。
/stuff/
和!/stuff/specific/
,但它仍然忽略了/stuff/specific/
。 - LB--git check-ignore -v
告诉我是因为 ~/.gitignore
的原因。 - gurney alex.gitignore
文件中添加 !/bin/
,然后另外再添加一个 /bin/.gitignore
文件,其中包含 !*
... 只进行其中一个更改是不起作用的,只有将这两个更改结合起来才有效。 - Felipe Brahm/stuff/*
和 !/stuff/specific/
。它们之间的区别在于 /stuff/
告诉程序忽略 stuff
目录本身,而 /stuff/*
表示忽略 stuff
目录中的所有子目录,但不要忽略特定的目录。这对我来说起了作用。 - reads0520如何忽略某个目录以外的所有内容,只保留一个目录 "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
到达目的地时,您必须排除路径上的所有内容,但必须包括目的地:
注意:这是一个排除文件(即.gitignore),因此逻辑是反过来的。忽略所有内容,除了tsp目录,忽略tsp目录中的所有内容,除了src目录...
/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore
你唯一的问题是bin/*
这个匹配模式并不包括bin
目录本身,所以git甚至都不会查看bin
目录。
有两个解决方案:
.gitignore
文件:
*
!/bin/
!bin/*
.gitignore
:
*
!/bin/
bin/.gitignore
:
!*
我更偏向于第二种解决方案,因为第一种方案不会停止忽略位于子目录中且不叫做 bin
的 bin
目录下的文件。在您的情况下,这可能重要,也可能不重要。
根据官方Git文档,其中一个例子说明:
例子:排除所有内容,除了特定的目录foo/bar(请注意/* - 如果没有斜杠,则通配符也会排除foo/bar中的所有内容):
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
关于前导斜杠的解释:如何在.gitignore中使用前导斜杠。
请尝试使用最新的GIT版本。
*
!*/
!/path/to/your/dir/**
我认为更好的方法是通过在模式之前加上斜杠,将每个模式锚定到顶层git目录:
/*
!/public_html
!/.gitignore
它不会忽略所有文件,而是只会忽略顶层的文件,而不是您不想忽略的目录中的文件。
.gitignore
对我很有效:
*/
/*
!bin/
虽然我来晚了,但是没有一个答案能够“一步到位”地解决我的问题。这个可以:
*
!bin
!bin/**