From 62421c15c418bcc85a3280a5a9d466885f5db9f7 Mon Sep 17 00:00:00 2001 From: git <1733044945@qq.com> Date: Wed, 26 Mar 2025 07:06:54 +0800 Subject: [PATCH] 2025.03.26 --- 笔记文件/2.笔记/gitattributes作用.md | 93 +++++++++++++++++++ .../git排除 排除CRLF行尾差异.md | 45 +++++++++ 笔记文件/日记/2025_03_26_星期三.md | 28 ++++++ 3 files changed, 166 insertions(+) create mode 100644 笔记文件/2.笔记/gitattributes作用.md create mode 100644 笔记文件/2.笔记/git排除 排除CRLF行尾差异.md create mode 100644 笔记文件/日记/2025_03_26_星期三.md diff --git a/笔记文件/2.笔记/gitattributes作用.md b/笔记文件/2.笔记/gitattributes作用.md new file mode 100644 index 0000000..bd5d0cf --- /dev/null +++ b/笔记文件/2.笔记/gitattributes作用.md @@ -0,0 +1,93 @@ +#杂七杂八常识 + +.gitattributes文件的主要作用包括: + +- 定义行尾转换规则 + +- 定义文件的文本/二进制属性 + +- 设置差异比较和合并策略 + +- 定义导出规则 + +- 配置自定义过滤器 + +- 语言属性 + +- 设置大文件处理 + +# .gitattributes 文件的作用 + +.gitattributes 文件是 Git 版本控制系统中一个强大但常被忽视的配置文件,它允许你为仓库中的文件或路径模式设置特定的属性。 + +## 主要功能 + +### 1. 统一行尾符号处理 + +``` bash +* text=auto +*.txt text eol=lf +*.bat text eol=crlf +``` + +### - 确保团队成员在不同操作系统下获得一致的行尾符号 + +- 避免因行尾差异导致的假改动 + +### 2. 指定文本/二进制文件 + +``` bash +*.png binary +*.jpg binary +*.pdf binary +``` + +### - 告诉 Git 哪些文件应该被视为二进制,不应尝试行尾转换 + +- 防止 Git 错误处理二进制文件导致损坏 + +### 3. 差异比较和合并策略 + +``` bash +*.md diff=markdown +*.java diff=java +*.xml diff=xml +``` + +### - 指定特定文件类型使用特定的差异算法 + +- 提高差异比较的可读性 + +### 4. 导出规则 + +``` bash +.gitattributes export-ignore +.gitignore export-ignore +/tests export-ignore +``` + +### 5. 大文件处理 + +``` bash +*.psd filter=lfs diff=lfs merge=lfs -text +``` + +### 6. 语言属性 + +``` bash +*.rb linguist-language=Ruby +``` + +- 帮助 GitHub 准确识别仓库的编程语言 + +## 优势 + +- 项目级配置:与全局 Git 配置不同,.gitattributes 配置会随项目一起提交,确保所有团队成员使用相同的规则 + +- 一致性:避免每个开发者自行设置导致的不一致问题 + +- 自动化:一旦设置,规则会自动应用,无需手动干预 + +- 减少冲突:特别是在跨平台开发团队中,显著减少因行尾符差异导致的合并冲突 + +.gitattributes 文件是确保项目在不同环境和开发者之间保持一致性的强大工具,尤其适用于多平台协作的开发团队。 \ No newline at end of file diff --git a/笔记文件/2.笔记/git排除 排除CRLF行尾差异.md b/笔记文件/2.笔记/git排除 排除CRLF行尾差异.md new file mode 100644 index 0000000..4f7f95b --- /dev/null +++ b/笔记文件/2.笔记/git排除 排除CRLF行尾差异.md @@ -0,0 +1,45 @@ +#杂七杂八常识 + +``` +这个问题是关于Git中如何处理CRLF(回车换行)差异问题。在不同操作系统中,文本文件的行结束符是不同的: +Windows使用CRLF(\r\n) +Linux/Unix使用LF(\n) +旧版Mac使用CR(\r) +这种差异会导致在跨平台协作时,即使文件内容没有实质性变化,Git也会报告有差异,因为行结束符发生了变化。 +``` + +### 使用.gitattributes文件 + +使用说明,参考[[gitattributes作用]] +在项目根目录创建`.gitattributes`文件,内容如下: + +``` shell +# 设置默认行为,所有文件都使用LF +* text=auto eol=lf + +# 对特定类型的文件强制使用LF +*.java text eol=lf +*.xml text eol=lf +*.txt text eol=lf +*.md text eol=lf +*.json text eol=lf + +# 二进制文件不应修改行尾 +*.png binary +*.jpg binary +*.jar binary +``` + +这种方法最为可靠,因为它是基于项目的,而不是个人Git配置,所有团队成员都会遵循相同的规则。 + +### 对已有项目修复CRLF问题 + +如果项目已经存在CRLF混乱问题,需要输入两行指令,进行修正即可 + +``` bash +# 重新检出所有文件,应用行尾设置 +git rm --cached -r . +git reset --hard +``` + +以上设置可以有效避免Git因行尾符差异而产生不必要的变更记录。 \ No newline at end of file diff --git a/笔记文件/日记/2025_03_26_星期三.md b/笔记文件/日记/2025_03_26_星期三.md new file mode 100644 index 0000000..830de72 --- /dev/null +++ b/笔记文件/日记/2025_03_26_星期三.md @@ -0,0 +1,28 @@ + +06:53 + +###### [[unity日常积累]] + +###### [[节奏天国]] + +###### [[帧同步王者荣耀]] + +###### [[从零开发跨平台通用日志插件]] + +###### [[通用异步网络通信库]] + +###### [[高性能定时系统实现]] + +###### [[学习资料]] + +###### [[其他]] + +#### [[看板]] + +# 今日任务 + +- [ ] 家里下载一下Clion作为版本管理 +--- +[[git排除 排除CRLF行尾差异]] +[[gitattributes作用]] +# Journal