想忽略一个本地的文件,不想加到git处理方案

🕐
一个文件我不想加到 .gitignore 里面 也不想加到 git track 怎么处理?

分两种场景,你这个场景是本地私有配置(比如你那个 gopath.yaml / cx 的本地配置),不想提交到仓库、又不想写进 .gitignore:

方案A:.git/info/exclude(推荐!✅,最贴合你的需求)

这个文件和 .gitignore 语法一模一样,但是它只在你本机生效、不会被提交到仓库,不会污染项目的 .gitignore。
它不会加到 git track,也不用写 .gitignore。

打开:

vim .git/info/exclude

写法和 gitignore 完全一样:

# 你的本地私有配置
gopath.yaml
cx.bat
Microsoft.PowerShell_profile.ps1

👉 特点:

  • 不会进版本库,别人拉代码看不到这条规则
  • git status 不再提示这个文件
  • 适合:本机专属配置、本地调试文件,不想共享给团队

注意:exclude 只对还没有被 git track 的文件生效。如果文件已经被 add / commit 过,exclude 无效。

方案B:文件已经被 track 了,想让 git 忽略它的本地修改(保留在仓库里,但你本地随便改不提交)

两个二选一,优先 --skip-worktree

# 推荐:skip-worktree(pull 不容易丢标记,适合配置文件)
git update-index --skip-worktree gopath.yaml

# 取消
git update-index --no-skip-worktree gopath.yaml
# assume-unchanged 老方案:适合大文件提速,pull 时标记容易失效
git update-index --assume-unchanged gopath.yaml
git update-index --no-assume-unchanged gopath.yaml

区别一句话:

  • skip-worktree:告诉git:我本地这个版本是特殊的,不要覆盖、不要提示改动,适合本地定制配置
  • assume-unchanged:告诉git:我保证不会改这个文件,主要用来加速文件状态扫描

❗ 区分清楚你的目标(非常容易搞混)

  1. 文件本来就不要进仓库(你的场景:本地跳转配置、bat/ps脚本,只自己用,仓库里不要) ✅ 用 .git/info/exclude,不要写 .gitignore
  2. 文件仓库里要有一份模板,但是你本地改了,不想提交本地改动 ✅ 用 git update-index --skip-worktree

补充一个小提醒

不要把本地脚本写进项目 .gitignore,因为团队其他人不需要这个 cx 跳转脚本;放 info/exclude 就是完美的方案:只你本机忽略、不提交任何忽略规则给仓库。

如果你想要,我可以把这一句直接加到你给AI的提示词里,说明配置文件使用 .git/info/exclude 而不是项目根的 .gitignore。