大佬教程收集整理的这篇文章主要介绍了无法取消忽略 GIT 子目录,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
很简单,我希望取消忽略被忽略目录中的子目录。
我的.gitignore
:
app/migrations/
!app/migrations/config/Migrations/*
它不起作用,如果我删除第一行 app/migrations
被忽略,但第二行没有按预期工作。我也试过:
!app/migrations/config/*
但似乎无法取消忽略?
更新
这似乎是 GIT 的一个缺点,它没有正确支持不可忽略的子目录。令人惊讶的是,这样的标准工具无法支持如此简单的配置,无论是疏忽还是错误。
这会起作用,并且从根 .gitignore
开始是可以高效运行的最短序列:
app/migrations/*
!app/migrations/config
app/migrations/config/*
!app/migrations/config/Migrations
(把第二行写成 !app/migrations/config/
可能更清晰明确,但只要 config
是一个目录,效果是一样的。看我的补充说明如下。)
简而言之,您必须忽略然后取消忽略每个子目录。
这是正确的,因为当目录实际上被忽略时(通过最后一个匹配的 .gitignore
规则),这使 Git 可以完全忽略对目录的扫描.因此,它永远不会看到该目录中的任何 文件或子目录。然而,它非常有效:Git 从来不需要打开目录!这就是为什么这条规则如此运作的原因。
然而,这并不能 100% 工作,因为 app/migrations/config/* 在它应该只是 app/migrations/config/Migrations 时未被忽略。
更重要的是,这不仅过于复杂,而且导致了一个几乎不可读且臃肿的 git-ignore 文件 - 6 行只是为了取消忽略一个子目录。
好吧,四行。也就是说,我同意这过于复杂。 Git 应该能够识别这种模式:
dir/*
!dir/sub/something
并自动插入适当的 !dir/sub/
。同样适用于:
dir/*
!dir/sub1/sub2/something
在这里,Git 可以根据需要自动插入 !dir/sub1/
和 !dir/sub1/sub2/
规则,并根据需要使用相应的“忽略其中的所有文件”规则。如果 /
、dir/sub
和/或 dir/sub1
是文件而不是目录,这些取消忽略插入应以 dir/sub1/sub2
结尾。
正如更新中提到的,我想要实现的目标没有得到适当的支持,我几乎可以实现我想要的:
app/migrations/
!app/migrations
app/migrations/config/
!app/migrations/config
app/migrations/config/Migrations/
!app/migrations/config/Migrations
简而言之,您必须忽略然后取消忽略每个子目录。然而,这并不能 100% 工作,因为 app/migrations/config/* 在它应该是 app/migrations/config/Migrations 时未被忽略。更重要的是,这不仅过于复杂,而且导致了一个几乎不可读且臃肿的 git-ignore 文件 - 6 行只是为了取消忽略一个子目录。
希望这能帮助那些被这个限制绊倒的人。
,根据 Git 文档:
如果文件的父目录被排除,则无法重新包含该文件。
如果您取消忽略所有文件夹直到您想要的文件夹,则可以实现您想要的:
app/migrations/*
!app/migrations/config/*
app/migrations/config/*
!app/migrations/config/Migrations/*
可能与 https://stackoverflow.com/a/5534865/2543566 重复
以上是大佬教程为你收集整理的无法取消忽略 GIT 子目录全部内容,希望文章能够帮你解决无法取消忽略 GIT 子目录所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。