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几种方式,可以覆盖我们日常大部分的开发场景。

相关推荐
一允5 分钟前
Git学习记录
git·学习
程序员果子2 小时前
GraphRAG:让大模型在知识图谱中精准导航
人工智能·git·语言模型·aigc·知识图谱
短剑重铸之日4 小时前
《7天学会Redis》特别篇: Redis分布式锁
java·redis·分布式·后端·缓存·redission·看门狗机制
小北方城市网4 小时前
SpringBoot 全局异常处理与接口规范实战:打造健壮可维护接口
java·spring boot·redis·后端·python·spring·缓存
hanqunfeng4 小时前
(三十三)Redisson 实战
java·spring boot·后端
later_rql5 小时前
【Git提交remote rejected】
git
小北方城市网5 小时前
SpringBoot 集成 MyBatis-Plus 实战(高效 CRUD 与复杂查询):简化数据库操作
java·数据库·人工智能·spring boot·后端·安全·mybatis
hanqunfeng6 小时前
(四十)SpringBoot 集成 Redis
spring boot·redis·后端
Tatalaluola7 小时前
Git版本控制常用命令
git
小北方城市网7 小时前
SpringBoot 集成 MinIO 实战(对象存储):实现高效文件管理
java·spring boot·redis·分布式·后端·python·缓存