From cf0ec4124557df7131dd7de7251b19860a48f2d7 Mon Sep 17 00:00:00 2001 From: maogeigei Date: Wed, 14 Oct 2026 11:23:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=93=E7=BA=A7=EF=BC=9A=E5=8A=A0=20.gitattr?= =?UTF-8?q?ibutes=EF=BC=8C=E6=8A=8A=E8=A1=8C=E5=B0=BE=E7=AC=A6=E9=92=89?= =?UTF-8?q?=E6=AD=BB=E6=88=90=20LF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 仓库原先没有 .gitattributes,各台机器的 core.autocrlf 各行其是 —— 本地工作副本被转成 CRLF、仓库里存的却可能是 LF,于是本地一改 git diff 就显示成整文件改动、合并时整个文件粘成一个冲突块(实测:某个文件表面冲突 758 行,忽略行尾符后真实差异只有 2 行)。 默认 `* text=auto eol=lf`,再对文本类逐类显式声明;.bat/.cmd 保留 CRLF; 图片、字体、压缩包、音视频、数据库文件一律 binary。 .gitignore 里放行 /.gitattributes —— 它跟 .gitignore 一样是仓级规则, 必须入库,否则别的机器取仓后仍按各自 core.autocrlf 各行其是。 --- .gitattributes | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ .gitignore | 3 +++ 2 files changed, 68 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..f4cbef6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,65 @@ +# 行尾符钉死策略(2026-10-14 立) +# +# 为什么要这份文件:仓库原先没有它,各台机器的 `core.autocrlf` 各行其是 +# ⇒ 同一份文件在不同机器上是 CRLF 或 LF,本地一改 `git diff` 就显示成整文件改动, +# 合并时整个文件粘成一个冲突块、没法逐行解(实测:某文件表面冲突 758 行, +# 忽略行尾符后真实差异只有 2 行)。 +# ⇒ 这里把默认与逐类都钉成 LF,让入库形态与工作副本一致。 + +# 默认:交由 git 判定是否文本;文本一律以 LF 入库 +* text=auto eol=lf + +# 文本类显式声明(避免 `text=auto` 的启发式误判) +*.md text eol=lf +*.markdown text eol=lf +*.txt text eol=lf +*.py text eol=lf +*.sh text eol=lf +*.bash text eol=lf +*.ps1 text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.json text eol=lf +*.yaml text eol=lf +*.yml text eol=lf +*.toml text eol=lf +*.ini text eol=lf +*.cfg text eol=lf +*.env text eol=lf +*.example text eol=lf +*.css text eol=lf +*.scss text eol=lf +*.html text eol=lf +*.htm text eol=lf +*.js text eol=lf +*.mjs text eol=lf +*.cjs text eol=lf +*.ts text eol=lf +*.tsx text eol=lf +*.jsx text eol=lf +*.svg text eol=lf + +# 二进制:禁止任何转换与 diff +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.webp binary +*.ico binary +*.bmp binary +*.ttf binary +*.otf binary +*.woff binary +*.woff2 binary +*.eot binary +*.pdf binary +*.zip binary +*.gz binary +*.tar binary +*.jar binary +*.mp3 binary +*.mp4 binary +*.webm binary +*.mov binary +*.db binary +*.sqlite binary diff --git a/.gitignore b/.gitignore index e7d3576..970cd31 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,9 @@ # ══════════════════════════════════════════════════════════════════════════ /* !/.gitignore +# 🔴 2026-10-14 加:行尾符策略文件。它跟 `.gitignore` 一样是**仓级规则**,必须入库 —— +# ⛔ 不入库的话别的机器取仓后仍按各自 `core.autocrlf` 各行其是,本仓的行尾符约定形同虚设。 +!/.gitattributes !/改包纪律.md !/browser-harness/ !/humanizer/