文档章节

请把 .gitattributes 加到你的 Git 仓库中

Jenkins中文社区
 Jenkins中文社区
发布于 02/15 13:22
字数 778
阅读 5.4K
收藏 7

什么是 .gitattributes ?

当执行 git 动作时,.gitattributes 文件允许你指定由 git 使用的文件和路径的属性,例如:git commit 等。

换句话说,每当有文件保存或者创建时,git 会根据指定的属性来自动地保存。

其中的一个属性是 eol(end of line),用于配置文件的结尾。本文将会深入了解如何配置文件的结尾行,这样的话,即使在不同的机器、操作系统 上都可以使得每个开发者都可以使用相同的值。

为什么是 .gitattributes(开发者之间的争议 ⚔️ )?

不是所有的开发者都是一样的,不能因为你是在 Windows 上使用 Visual Studio Code 开发的,就期望别的 Pull Request 也是基于相同的开发 环境完成的(在 MacOS 上可能用的是 Sublime Text2)。

正如上面提到的,开发者使用不同的操作系统,默认的文件结尾行就会不同。在 Windows 上默认的是回车换行(Carriage Return Line Feed, CRLF),然而,在 Linux/MacOS 上则是换行(Line Feed, LF)。

从表面看起来,内容都是一样的,那我们为什么还会困扰呢???

好的,如果你启用了该功能,并设置属性 endOfLine  lf 的话。

{
  "endOfLine": "lf"
}

在 Windows 上,开发者会看到如下的检查警告。

linting-errors.png

这时候 .gitattributes 就可以派上用场了 🦸!

新仓库

首先,在仓库的根目录下创建名为 .gitattributes 的文件。

下面,是一份 .gitattributes 文件的样例内容。

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

把该文件提交并推送到服务器上。

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

现在,任何人从仓库获取代码后,创建以及修改文件时,git 都会自动地设置好正确的文件结尾。

增加到已有的 Git 仓库

正如上面提到的,在仓库的根目录下创建名为 .gitattributes 的文件。一旦文件推送到 git 服务器后,请确保你的本地 仓库是干净的、无需提交的。使用命令 git status 可以检查是否你的仓库是干净的。

注意:如果你还有未提及或推送的文件,请确保这些动作已经被执行过了,或者在执行下面的命令前 stash 过。

重置 GitAttributes

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

上面的命令就会根据文件 .gitattributes 中的定义,更新文件的结尾行。

任何变更都会自动使用指定文件的文件结尾行格式。

下一步,可以通知团队成员或者协作者去执行 Git 属性重置的命令。

现在,prettier 就不会在提示有关 CR 的问题了,所有的开发者都可以安心写代码了! ☮️

no-prettier-linting-errors.png

© 著作权归作者所有

Jenkins中文社区

Jenkins中文社区

粉丝 86
博文 92
码字总数 142350
作品 3
海淀
私信 提问
加载中

评论(1)

AbbyCin
AbbyCin
http://www.yinwang.org/blog-cn/2015/03/11/git-etiquette
Github如何上传超过100M的大文件

笔者我是在github上做了一个开源库(一个灵活配置的自定义相机库(拍照+录制视频))从而录制了一个大概200M+的gif文件,在commit完成了,push的时候 总是报错,大致信息如下: 或 上面错误的...

码农大表哥
2018/01/03
0
0
msysGit 中文环境配置及跨平台开发注意事项

注:因从 Git V1.7.10 开始引入了 Unicode 支持,所以在此版本之前会出现的乱码问题可能在之后的版本则不需要设置,但仍存在一些乱码问题,因此我仍然强烈推荐与 mintty 配合使用。 Git 是一...

osc前美工
2013/09/03
1.1K
1
Git 操作远程仓库(Github)

克隆远程仓库到本地 git clone git@github.com:TANGKUO/HIS.git #会自动在当前目录下创建同名的仓库,然后克隆。远程仓库可以是自己的、也可以是他人的 同步更新到远程仓库 场景:要把本地仓...

chenhongyong
04/07
0
0
g4e基础篇#4 了解Git存储库(Repo)

Git 存储库看上去就是一个文件夹,只是在这个文件夹中不仅仅保存了所有文件的当前版本,也同时保存了所有的历史记录,这些额外的信息都保存在当前文件夹下面的.git子目录中。因为前面我们所描...

leixu
2018/01/13
0
0
Unity 3D 开发《王者荣耀》:Hello World

Unity 安装 Unity 官方网站:https://unity3d.com 点击右上角的 获取Unity 系统要求 OS: Windows 7 SP1+, 8, 10, 64-bit versions only; Mac OS X 10.9+. GPU:有DX9(着色器模型2.0)功能的...

iOSDevLog
2018/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

超实用企业级搜索引擎_Elasticsearch(二)基于RESTFul Api操作

Elasticsearch(二)基于RESTFul Api操作 想要进行API操作,必须安装好Elasticsearch,如果没安装的,可以参考上篇去操作一波,再来学习API操作噢! Elasticsearch的 API,我们可以不用每个API语法啥...

煌sir
26分钟前
29
0
版本控制git的简单使用

0.第一次使用时配置: git config --global user.name "your_name" git config --global user.email "your_name@domain.com" 用的最多的: (查看当前git状态) git status 1.初始化: ......

baowang123
40分钟前
5
0
定时器Timer和TimerTask

为什么要使用定时器呢? 比如说一个web应用,如果这个应用规模很大,那它的日志数据是不是很多。如果一直存下来服务器的存储量怕是不行吧,需要隔一段时间删除,那么就需要一个线程每隔一段时...

南柯好萌
58分钟前
18
0
深圳创服机构创成汇投融资对接指南

深圳创服机构创成汇投融资对接指南 一线城市一直是许多创业者创业热土,深圳也不例外,作为发达城市,科技是深圳的标志,也是许多科技创业者向往之地,科技创业者在创业前期面临许多难题,其...

cchlin
今天
35
0
egg学习笔记第六天:使用中间件屏蔽可疑用户

站点有时候想屏蔽一些特定频繁抓取服务器数据的用户,可以放在中间件中去做,用户在指定Ip数组内,则屏蔽,如果不在,则匹配路由规则执行controller。 中间件的概念: 匹配路由前,匹配路由完...

一生懸命吧
今天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部