Git高级——忽略文件的几种方式

初始化git仓库

首先我们创建一个git-learn目录,通过git init来初始化git仓库。

创建一个新文件,能看出来默认是Git不会追踪这个新文件的,文件出现在对应的untracked files中。

git rm

通过git add添加追踪,然后再通过git rm --cached 移除追踪。git rm用于删除某些文件,这个命令会删除Git版本库和工作目录中的文件,如果加上--cached标签,则只会删除版本库,保留工作目录。

git rm命令用于从Git仓库中移除文件或目录,它有以下几个作用

  1. 从版本控制中移除文件 :通过 ****git rm 命令可以将文件从版本控制中移除,即将文件从 Git 仓库的历史记录中删除。这样,文件在将来的提交中将不再被跟踪。
  2. 从暂存区中移除文件 :使用 git rm 命令可以将文件从 Git 的暂存区中移除,这意味着文件将不会包含在下一次提交中。
  3. 删除工作目录中的文件 :默认情况下,git rm 命令会同时删除工作目录中的对应文件,除非使用了 --cached 选项。

.gitignore文件

.gitignore是一个用来指定Git忽略哪些文件或目录的文件。它的作用是告诉Git在进行版本控制时忽略特定的文件或目录,这些文件不会被纳入Git版本控制管理里面。

.gitignore支持的功能比较强大,可以包含文件名、路径、通配符模式等规则,用于描述需要被忽略的文件或目录,这些规则可以指定具体的文件名,也可以使用通配符来匹配一类文件。

.gitignore文件通常位于Git仓库的根目录下,但也可以放置在子目录中,这样就可以只对该子目录生效。

.gitignore文件通常会提交到远程仓库,指定一些忽略的文件或目录,维护一些整个团队共享的规则,比如logs,比如一些需要在本地修改的settings

我们在.gitignore文件中添加这么一行

css 复制代码
a.go

这里会默认从.gitignore的当前目录进行查找,忽略当前目录下a.go文件的改动。

git/info/exclude

git/info/exclude文件是Git用于指定需要在本地忽略的文件或目录的文件,功能和.gitignore类似。

我们先创建一个b.go文件,然后在git/info/exclude中添加对应文件的追踪。

再次查看git status,发现已经没有这个文件的修改了。

git/info/exclude文件和.gitignore文件都用于指定需要在Git中忽略的文件或目录,但它们有一些区别

  • .gitignore适用于整个Git仓库,会被提交到远程仓库,也可以被其他开发者看到和编辑。
  • /git/info/exclude文件只对本地开发者可见,不能提交到远程仓库,用于指定个人特定的忽略规则,不会影响到团队。

git update-index --no-assume-unchanged

git update-index --no-assume-unchanged 命令用于取消对文件的 --assume-unchanged 标记,即告诉 Git 停止假设指定文件未被修改。这个命令是忽略、提交文件的大杀器,优先级比前几种方式都要高。

具体作用包括:

  1. 当文件被标记为 --assume-unchanged 后,Git 将不会检查这些文件是否发生了变化,从而提高性能。
  2. 通过取消 --assume-unchanged 标记,Git 将重新开始检查文件是否被修改,以便在必要时将其包含在提交中。

相反的命令是 git update-index --assume-unchanged,它用于将文件标记为 --assume-unchanged,告诉 Git 假设指定文件未被修改,从而避免不必要的文件状态检查。

结语

本文总结了几种忽略文件的Git方式,主要有rm.gitignoregit/info/excludegit update-index --no-assumen-unchanged几种方式,可以覆盖我们日常大部分的开发场景。

相关推荐
To_OC8 小时前
手写 AI 编程 Agent 的命令执行工具:我被 child_process 坑出来的实战经验
后端·node.js·agent
养肥胖虎8 小时前
Git提交规范笔记:feat和fix到底该怎么写
git·conventionalcommits
手握风云-8 小时前
深入 Git:它是如何记录世界的(二)
git
逝水无殇10 小时前
C# 异常处理详解
开发语言·后端·c#
考虑考虑13 小时前
Sentinel安装
java·后端·微服务
IT_陈寒13 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端
碎碎念_49213 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
逝水无殇13 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
YIAN13 小时前
从手写 Agent 工具到 MCP 协议:一文搞懂大模型跨进程跨语言工具调用
后端·agent·mcp
小兔崽子去哪了14 小时前
Docker 删除镜像后磁盘空间没有释放?
后端·docker·容器