- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近阅读了一些关于 .gitattributes 的内容,也找到了像这样的地方,https://github.com/alexkaratarakis/gitattributes ,他们试图在其中维护所有文件类型的 gitattributes。然而在我看来,通过这些文件,我本能地认为这是一个无法维护的困惑。这意味着您每次使用任何新的文件扩展名或任何软件产生新的文件扩展名时都必须更新该文件,这是不可能的。当您与 30 多人的团队一起工作时,维护这样的文件简直就是一场噩梦,我们几乎无法维护一个简单的 icons.svg 文件。
但除此之外,我多年来一直在许多不同的项目中编写和使用 git,但我从未使用过 .gitattributes。我们在我们的项目中使用 prettier 之类的东西,将换行符重写为“lf”,我们在 Windows 上有开发人员,这样的东西从来没有出现过任何问题,vscode 也从来没有出现过这样的问题。 Git 还会自动获取 png 等二进制文件,并自动显示 svg 等文件的文本差异,我从来不需要配置它。
所以我问一个问题,真的有必要有这个文件吗?因为在我看来,它正在注册大量完全不必要的维护,而且 git 足够聪明,可以弄清楚它应该或不应该对文件做什么。
最佳答案
is it really necessary to have this file?
是的,对于与 Git 相关的任何设置(eol、diff、 merge 过滤器、内容过滤器等),您希望存储库的任何协作者都遵循。
这与 git config
不同,后者出于安全原因保留在本地(因为它可能包含敏感信息或危险指令)
.gitattributes
是版本化源代码的一部分,有助于建立通用的 Git 标准。
例如,我总是输入(如 VonC/gitcred/.gitattributes
):
*.bat text eol=crlf
*.go text eol=lf
因为无论您的 IDE/编辑器如何配置,我需要 CRLF 才能让我的 Windows bat 脚本正常运行,我更喜欢 LF对于我在 Windows 或 Linux 上编辑的 Go 文件。我一直认为像 core.autocrlf
这样的本地设置是一种反模式,best left to false
.
但是 .gitattributes
可以声明许多其他 Git 元素:
working-tree-encoding
, 用于 translation files ident
至 embed file SHA1作为in here filter
, 最引人注目的是 Git LFS , 作为 in here ,我用了它 many times before .diff
,至少可以避免区分二进制文件,或定义外部 diff driver xfunname
for instance ):我提到 them here .unityyamlmerge
whitespace
定义 diff
和 apply
应该考虑空白错误.gitattributes
文件不是“强制”文件,而是 Git 工具箱中的一个有用工具,可以在项目代码库中安全共享。
关于git - git 真的需要 .gitattributes 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73086622/
在 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
我是一名优秀的程序员,十分优秀!