专栏首页云前端[译] 请把 .gitattributes 加入你的项目

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

原文:https://dev.to/deadlybyte/please-add-gitattributes-to-your-git-repository-1jld

.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 的开发者就会遭遇以下语法提示:

这就是 .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 不会再为 CR 的问题频频抱怨了,所有开发者也能和平共处了!

本文分享自微信公众号 - 云前端(fewelife),作者:云前端

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Chrome Extension

    Chrome插件是一个用Web技术开发、用来增强浏览器功能的软件,它其实就是一个由HTML、CSS、JS、图片等资源组成的一个.crx后缀的压缩包

    江米小枣
  • 浅析 Git 子模块

    以前端项目为例,通常我们用 npm dependencies 来集成第三方库,或者将自己维护的多个项目中通用的组件抽取出来。

    江米小枣
  • 实例入门 Vue.js 单元测试

    作为一个以 文档丰富 而广为人知的前端开发框架, Vue.js 的官方文档中分别在《教程-工具-单元测试》、《Cookbook-Vue组件的单元测试》里对 Vu...

    江米小枣
  • 从 Android 到 Windows Phone 8:使用 SQL 数据库

    在接下来的几篇文章中,我将介绍如何使用 Windows Phone 8 平台上的本地数据,并与 Android 平台相比较。

    Techeek
  • php文件上传原理与实现方法详解

    文件上传实际上就是在前段使用一个form表单提交本地文件到服务器,然后在服务器端将文件从临时目录转移到指定目录的过程。

    砸漏
  • 如何优雅的生成接口文档?

      我们知道在项目开发阶段,接口文档基本上是必备产物了,一般由后端开发人员提供,作为和前端人员进行前后端接口联调的桥梁,或者与别的项目模块进行交互提供指导等等,...

    IT可乐
  • JAVA NIO之文件通道

    通道是 Java NIO 的核心内容之一,在使用上,通道需和缓存类(ByteBuffer)配合完成读写等操作。与传统的流式 IO 中数据单向流动不同,通道中的数...

    田小波
  • 全文搜索实战2-ik分词及搜索高亮

    数据存储功能基于mybatisplus框架,实现相关entity和mapper等即可。

    技术路漫漫
  • Idea使用又Get新技能

    有些功能不是不会用,或许只是你不知道有这么一个东西的存在。昨天刷朋友圈看到超哥晒“红酒与代码”的照片,看了配图Get到新技能,也解决了日常遇到的问题,分享给大家...

    程序新视界
  • 谷歌发布音频SDK Resonance Audio,助力VR、AR开发

    近日、谷歌发布了一款名为“Resonance Audio”的新型空间音频软件开发套件。Resonance Audio是一款基于现有VR Audio SDK技术的...

    BestSDK

扫码关注云+社区

领取腾讯云代金券