2025.03.26
This commit is contained in:
parent
2b563088d2
commit
62421c15c4
93
笔记文件/2.笔记/gitattributes作用.md
Normal file
93
笔记文件/2.笔记/gitattributes作用.md
Normal file
@ -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 文件是确保项目在不同环境和开发者之间保持一致性的强大工具,尤其适用于多平台协作的开发团队。
|
45
笔记文件/2.笔记/git排除 排除CRLF行尾差异.md
Normal file
45
笔记文件/2.笔记/git排除 排除CRLF行尾差异.md
Normal file
@ -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因行尾符差异而产生不必要的变更记录。
|
28
笔记文件/日记/2025_03_26_星期三.md
Normal file
28
笔记文件/日记/2025_03_26_星期三.md
Normal file
@ -0,0 +1,28 @@
|
||||
|
||||
06:53
|
||||
|
||||
###### [[unity日常积累]]
|
||||
|
||||
###### [[节奏天国]]
|
||||
|
||||
###### [[帧同步王者荣耀]]
|
||||
|
||||
###### [[从零开发跨平台通用日志插件]]
|
||||
|
||||
###### [[通用异步网络通信库]]
|
||||
|
||||
###### [[高性能定时系统实现]]
|
||||
|
||||
###### [[学习资料]]
|
||||
|
||||
###### [[其他]]
|
||||
|
||||
#### [[看板]]
|
||||
|
||||
# 今日任务
|
||||
|
||||
- [ ] 家里下载一下Clion作为版本管理
|
||||
---
|
||||
[[git排除 排除CRLF行尾差异]]
|
||||
[[gitattributes作用]]
|
||||
# Journal
|
Loading…
x
Reference in New Issue
Block a user