- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在期待 **/
匹配 git repo 中的任何目录,但实际上它什么都不匹配。 man gitattributes
说:
patterns that match a directory do not recursively match paths inside that directory (so using thetrailing-slash path/ syntax is pointless in an attributes file; use path/** instead)
**/
甚至与目录本身不匹配。我的意思是,如果我有
a/b.txt
在我的 repo 中,然后
**/
甚至不匹配目录
a
.我期待它匹配目录
a
但不是文件
a/b.txt
.
**/
至
**
,则目录及其内容都匹配。在同一个例子中,两个目录
a
和文件
a/b.txt
匹配。
**
的情况下,git 为什么要列出它们? ?
最佳答案
不像 .gitignore
,它进行特殊情况目录处理,看来 .gitattributes
代码从不特例目录。这部分是因为 Git 并不真正存储目录。1 所以每个属性都应用于某些文件集。尽管如此,文件确实驻留在目录中——在两个真实的操作系统中,以及它们在提交中的存储方式(见脚注 1)——所以它可能对 .gitattributes
有意义。对尾部斜杠有一个特殊情况,而不是将该属性应用于文件。
但是,正如您所观察到的,这不会发生。尽管 attr.c
中有一些代码(在 path_matches
中)检查目录。但这并不重要,因为 Git 属性的有用部分无论如何都只适用于文件。
我上面强调的文字是这个意思。考虑,例如:
*.txt text
*.jpg -text diff=jpg
version export-subst
这可能会在一些
.gitattributes
中找到文件。这告诉 Git
*.txt
文件是文本,因此任何 CRLF 转换都适用,而
*.jpg
文件是二进制的,它们不会(差异将使用“jpg”差异驱动程序生成:参见
gitattributes )。
version
文件将在执行
git archive
时执行哈希 ID 替换.所有这些操作都发生在文件上。如果我们有:
sub/ -text
这根本什么都不做,因为目录
sub
永远不会出现在 Git 的索引中(因此影响索引/工作树转换的操作不适用),并且只会在 Git 存储库中存储为一棵树(再次参见脚注),您(用户)没有可用的操作或选项。如果您想要
sub
内的文件要被视为二进制文件,您可以编写:
sub/* -text
sub/**/* -text
诚然,这是两行,如果 Git 允许,其中一行会提供
sub/
作为这里的模式。因此,能够通过目录前缀来命名文件可能有些用处,但缺乏这种能力并不是一个严重的问题。
git ls-files --stage
来查看此信息。 .这增加了缓存数据和标志 - 您也可以通过添加
--debug
来查看大部分内容。到
git ls-files
命令——但四元组,阶段号通常为零,是索引的关键部分。以下是来自 Git 本身的 Git 存储库索引的示例:
100644 c2f5fe385af1bbc161f6c010bdcf0048ab6671ed 0 .cirrus.yml
100644 c592dda681fecfaa6bf64fb3f539eafaf4123ed8 0 .clang-format
100644 f9d819623d832113014dd5d5366e8ee44ac9666a 0 .editorconfig
100644 b08a1416d86012134f823fe51443f498f4911909 0 .gitattributes
100644 e7b4e2f3c204c2c94c60222abbc702bd7d72de39 0 .github/CONTRIBUTING.md
100644 952c7c3a2aa11ea1087390be61eab6f7c0013599 0 .github/PULL_REQUEST_TEMPLATE.md
100644 84a5dcff7a05fb724d78826212c5fa22ba5df958 0 .github/workflows/main.yml
100644 ee509a2ad263989fcebe3c3543aa32efed1cacda 0 .gitignore
100644 cbeebdab7a5e2c6afec338c3534930f569c90f63 0 .gitmodules
100644 bde7aba756ea74c3af562874ab5c81a829e43c83 0 .mailmap
只要所有文件都在零阶段,Git 就可以将索引转换为树对象。树对象在那些看起来有目录名的条目之上包含一个子树,例如
.github/*
文件。在索引中,目录不存在:文件只是命名为
.github/CONTRIBUTING.md
等等。然而,在一次提交中,它们变成了子树。请注意,一个文件名为
github/workflows/main.yml
,所以
.github
sub-tree 将包含一个名为
workflows
的子子树将包含
main.yml
文件。
关于git - 在 gitattributes 中使用 `**/` 匹配目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62548768/
在 gitattributes 中,您可以指定应将特定文件类型视为二进制文件,例如 *.myExt binary 来自: http://git-scm.com/docs/gitattributes 这
在 gitattributes 中,您可以指定应将特定文件类型视为二进制文件,例如 *.myExt binary 来自: http://git-scm.com/docs/gitattributes 这
我刚刚创建了一个新的 Laravel 项目,我正在设置我的 .gitattributes语言属性。问题是,我不确定要为哪些文件/目录设置哪些。 默认.gitattributes文件如下所示: * te
有什么办法可以暂时覆盖git中的属性,类似于-c可以用来覆盖配置选项吗? 我想调用git diff带有特定的自定义textconv命令与我通常使用的命令不同。 为了更具体:我的实际用例是在 vim 中
我们正在开发一个项目,几个人拥有 Mac,而我在 Windows 上运行。我们在换行方面遇到了一些问题。 我在 GitHub 上读到我可以添加以下内容: # Set default behaviour
我在我的 git 安装 (CentOS) 的根目录中创建了一个 .gitattributes 文件。我已经通过 samba 共享连接在 PHPStorm 中创建了测试文件,并将行结尾专门设置为 CRL
有时人们会创建包含已知扩展名列表的 .gitattributes 文件,然后手动将它们声明为 text 或 binary: *.ts text *.js text *.json text *.csv
我正在尝试在 .gitattributes 中处理没有扩展名的文件: * text=auto *. eol=lf .py eol=lf *. 显然没有帮助。 git check-attr --all
我们已经为我们的项目存储库创建了一个文本和二进制文件类型的列表,但我担心某些类型可能已经从该分类中消失,或者将来有人可能会添加一个新的文件类型而忘记了将其添加到 .gitattribute 文件中。
我正在为使用 smudge/clean filters 的 git 编写一些工具,因此我必须在 .gitattributes 文件中创建条目。 不幸的是,该文件的解析相当简单,只是按空格拆分,因此在我
我的 git 存储库中有许多模板文件,它们以不同的速率变化。这些然后用于生成 HTML 页面。如果有人报告问题,我希望他们能够告诉我哪个版本的模板文件有问题。目前,我在更改文件时手动将日期输入到文件中
我想在合并请求期间利用 gitlab 图像差异。但是,我得到的不是渲染图像或差异,而是: 一条消息说:This diff was suppressed by a .gitattributes entr
我刚刚开始熟悉 git 的使用。我一直在使用 https://github.com/Danimoth/gitattributes 中的示例为我的各种项目(主要是 bash 和 python 脚本)整理
因此,我最近在我们的一个存储库中添加了一个 .gitattributes 文件,以尝试强制使用一致的行结尾: # All Perl Sources should use Unix style li
例如,lg2s 的 .gitattributes 文件有 *.cs diff=csharp 行。代码的输出 using (var repo = new Repository(@"path\to\lg2
是否有任何具体示例,可以通过 Linguist 属性检测 GitHub 中的错误语言? 来源:https://github.com/github/linguist 语言学家文档 语言学家的语言 语言学
我已阅读 documentation on .gitattributes和 searched Stack Overflow对于这个问题的简单答案,但到目前为止还没有找到。我有一个像这样有空格的文件。
我读过 Git documentation ,它表明我可以明确地将某些文件设置为文本,因此它们的行尾会自动更改或作为二进制文件以确保它们不变。 但是,我也读到 Git 非常擅长检测二进制文件,这让我觉
我想设置 git 以将所有 LF 结尾更改为 CRLF。 我在我的存储库的根文件夹中创建了一个 .gitattributes 文件: * text=auto # Have git change eve
我正在使用 Visual Studio 2010 和 git (git svn)。我的同事使用带有 Ankhsvn 插件的纯 svn。 当我尝试在启用 Git 源代码管理提供程序的情况下打开文件时,V
我是一名优秀的程序员,十分优秀!