我不理解gitignore
文档中的一些陈述:https://git-scm.com/docs/gitignore
我不理解的部分显示在粗体中。我的问题是斜体。
如果图案以斜线结尾,将其移除以用于以下描述“
删除了哪些内容?什么是“以下说明”?
如果模式不包含斜杠/,Git会将其视为shell glob模式,并检查相对于.gitignore文件位置的路径名匹配[..] 否则 ,Git将模式视为shell glob
“否则”来自什么?它们是否与模式中的“有”和“没有”斜线形成鲜明对比?如果是这样,两种情况如何区别对待?
尾随“/ **”匹配内部的所有内容。
与没有星号的尾随/
的结果相同吗?它看起来像我在子弹点中看到的关于尾部斜杠(“foo /将匹配目录foo及其下面的路径”)。
您是否也发现此文档令人困惑?如果是这样,那么向Git团队发出信号的最佳方式是什么? (邮件列表或问题跟踪器?)。
答案 0 :(得分:0)
如果图案以斜线结尾,则为了以下描述的目的将其删除"
删除了什么?
尾随斜线。
""以下描述" ?
手册页的其余部分,尤其是章节的其余部分" PATTERN FORMAT"。
如果模式不包含斜杠/,Git会将其视为shell glob模式,并检查相对于.gitignore文件位置的路径名匹配[..]否则,Git会将模式视为shell glob
"否则"从什么?
请注意"否则"开始一个新的要点,因此它不限于你引用的点。这意味着"否则"来自该部分开头的所有ifs" PATTERN FORMAT"。
尾随" / **"匹配里面的一切。
这与尾随/没有星号的结果相同吗?
我想是的。
您是否也发现此文档令人困惑?
完全没有,实际意义上说:我从来没有忽略过任何我不想忽视的事情,也没有忘记跟踪我想忽略的事情。
如果是这样,那么向Git团队发出信号的最佳方式是什么? (邮件列表或问题跟踪器?)。
他们direct users到邮件列表。
答案 1 :(得分:0)
如果图案以斜杠结尾,则出于以下描述的目的将其删除”
删除了什么?什么是“以下说明”?
我猜这意味着当提到斜杠时,尾部的斜杠将被排除。我认为这实际上只会影响下一段。
如果该模式不包含斜杠/,则Git会将其视为Shell Glob模式,并检查相对于.gitignore文件位置的路径名是否匹配[..] 否则 ,Git将模式视为外壳球体
“否则”来自什么?它们是否在模式中将“斜线”与“斜线”进行对比?如果是这样,这两种情况有何不同?
因此,请牢记以上解释,第一段是这样的:
如果该模式不包含斜杠“ /”,而是尾随斜杠,则该模式将在所有目录中匹配。
换句话说,foo/
将匹配/bar/foo/
,而foo
将匹配/bar/foo
“其他部分”的意思是:
如果模式包含斜杠“ /”,而不是尾部斜杠,则始终从根开始考虑。
换句话说,foo/bar
将匹配/foo/bar
,但不匹配/bar/foo/bar
。
结尾的“ / **”匹配其中的所有内容。
结果是否与不带星号的结尾
/
相同?从我在关于斜杠的结尾的项目符号点看,它看起来像(“ foo /将匹配目录foo及其下方的路径”)。
有细微的差别。 foo/
将忽略该文件夹,而foo/**
将忽略该文件夹及其内容。
因此,如果这是您的文件结构:
.gitignore
foo
├── bar.json
└── foo.txt
然后下面的.gitignore文件将跟踪所有内容:
foo/
!foo/
但是
foo/**
!foo/
什么也不会追踪。因为首先忽略所有文件,然后才忽略文件夹/foo
,但由于该文件夹没有可跟踪的文件,因此该文件为空,并且git不会跟踪空的文件夹。
您还会发现本文档令人困惑吗?如果是这样,向Git团队发出信号的最佳方法是什么? (邮件列表或问题跟踪器?)。
我总体上喜欢git文档,并且我还认为.gitignore
文档非常好。只有您提到的3个段落让我感到困惑(和others)。实际上,这个周末我花了几个小时来理解它,而我有与您完全相同的问题。在确定可以结帐here之后,我创建了一个博客文章。
您可以与他们联系,请参阅https://git-scm.com/community
有关Git社区的问题或评论可以发送到邮件中 使用电子邮件地址git@vger.kernel.org列出。错误报告 git应该发送到该邮件列表。
该网站实际上有一个git repository,但是来自文档is imported from the git man pages的内容,因此人们必须在实际的git存储库中发出拉取请求。
我正在写邮件列表,还创建了pull-request。随时在这里发表评论。