[译] 🙏 请把 .gitattributes 加入你的项目

简介: [译] 🙏 请把 .gitattributes 加入你的项目

原文:dev.to/deadlybyte/…

.gitattributes 文件允许你指定当执行 git commit 等 git 动作时,应该被 git 使用的文件和路径的属性(attributes)。

换句话说,每当一个文件被创建或保存,git 会按照这些属性所指定的自动化的保存文件。

属性之一是 eol (end of line) ,其用于配置文件的行尾。本文就以此谈论如何配置行尾,以便让即便跨仓库使用不同机器、操作系统的每一位开发者都能使用到同样的值。

⚔️ .gitattributes 能平息程序员之间的战火吗?

并非所有开发者都整齐划一,对于你在一台 Windows 主机上使用 Visual Studio Code 写的代码,下一次由 pull request 提交时可能就是在 MacOS 主机上的 Sublime Text 2 中开发完成的。

由于开发者使用不同的操作系统司空见惯,由此带来的每种操作系统处理行尾的方法也各不相同。在 Windows 系统中,对于行尾默认使用回车换行 CRLF(Carriage Return Line Feed);而 Linux/MacOS 则只使用换行 LF(Line Feed)。

肉眼看上去内容都是一样的,为什么要整这些幺蛾子呢🤔???

由此,如果你还使用了 prettier 并将 endOfLine 像这样设置的话:


{
  "endOfLine": "lf"
}

使用 Windows 的开发者就会遭遇以下语法提示:

代码文件将出现 Prettier Linting 报错

这就是 .gitattributes 应该出现并挽救局面的时刻了!

为新项目配置 .gitattributes

先在项目根目录创建一个 .gitattributes 文件,其内容为:


*.js    eol=lf
*.jsx   eol=lf
*.json  eol=lf

在仓库中 commit 该文件并将改动 push 到服务器:


git add .
git commit -m "Added .gitattributes to repo"
git push

这样一来,当有人从该仓库中取得代码并创建或修改其文件时,默认正确的行尾将经由 git 被自动使用。

向既有项目加入 .gitattributes

同样按上一节中的方法创建 .gitattributes 文件。一旦该文件被推送到 git 服务器后,就要确保本地仓库是干净的且没有东西要提交。使用 git status 来看一下情况:


git status

注意: 如果仍有文件要 push 或 commit,请确保这些动作先被执行完或在执行下条命令之前被 stash 暂存。

GitAttributes Reset


git rm --cached -r .
git reset --hard

以上两条命令将会使用 .gitattributes 中新定义行结尾规则更新仓库文件。

任何更改,都将根据匹配的文件类型自动应用新的行结尾。

下一步就是周知团队伙伴或合作伙伴了,也要运行一下上面两条命令。

没有 Prettier Linting 报错的代码文件

现在,prettier 不会再为 CR 的问题频频抱怨了,所有开发者也能和平共处了! ☮️


相关文章
|
开发工具 git Python
彻底解决 git push 的【pack exceeds maximum allowed size】
彻底解决 git push 的【pack exceeds maximum allowed size】
1862 0
|
开发者 iOS开发
介绍 UITableView 和 UICollectionView,它们的区别是什么?
介绍 UITableView 和 UICollectionView,它们的区别是什么?
717 0
资源块|带你读《5G空口特性与关键技术》之九
3GPP TS38.211 中对 Point A 进行了定义。需要说明的是,2018/6 版本的TS38.211-f20 中的定义在 2018/9 版本中没有变化,不过在2018/12 版本 TS38.211-f40 中,基于 RAN1#94b 会议的决议进行了修改,有关信息请参看 RAN1#94b会议报告以及提案 R1-1811817 和 R11810834。
12712 2
资源块|带你读《5G空口特性与关键技术》之九
|
1月前
|
人工智能 算法 Shell
灵码+Qwen3-Coder——使用Skill机制实现代码审核
本文介绍如何在灵码中实现Claude Skills能力:基于openskills方案,通过配置project_rules.md适配Skill元数据与SKILL.md提示模板,支持动态加载领域知识(如代码审核、DOCX生成),实现模块化AI能力扩展与按需调用。
灵码+Qwen3-Coder——使用Skill机制实现代码审核
|
Python
Python Google风格注释详解
Google风格注释是Python代码注释的一种标准化格式,它提供了一种规范的注释格式,使得代码更加易读、易于维护。Google风格注释使用三个双引号来包围注释内容,并按照一定规范编写。在注释中使用动词短语来描述函数的行为,并使用被动语态。在注释中使用正确的标点符号和缩进,使得注释易于阅读和理解。通过使用Google风格注释,我们可以为代码提供清晰的文档和说明,使得代码更加易读、易于维护。
835 3
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
12383 23
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
1460 4
|
网络协议 安全 Linux
【Linux高手秘籍】一招教你彻底摆脱IPv6困扰?你不知道的秘密在这里!
【8月更文挑战第23天】本文详细介绍了如何在Linux系统中根据需要临时或永久地禁用IPv6。通过使用`sysctl`命令,您可以轻松地临时禁用IPv6。若要实现永久禁用,您可以在`/etc/sysctl.conf`文件中设置相关内核参数,或者在GRUB配置文件中添加参数。这些方法均附有具体命令示例,帮助您有效管理和控制IPv6的状态。无论您的需求是临时调整还是持久化设置,本文都能提供实用的指南。
1309 0