Git 之 .gitignore 不生效

引言

有时候太顺了也不是一件好事,有时候不从头自己做一遍你也永远不会发现自己知识的薄弱点

最近,遇到了一件比较有趣的事,事情的经过是这样的:.gitignore已经忽略了build.gradle文件夹下的内容,但是IDEA编译后还是会在控制台追踪这两文件夹下的变化

历程

首先,这是第一次遇到这种情况,第一反应便是:怎么可能?明明已经在.gitignore添加了build.gradle这两文件夹了呀,这绝对不可能,思考了一会儿,我觉得应该是电脑的问题,重启一下可能就好了?

然后,结果当然不是我意料之中那般,在我编译代码后,build.gradle文件夹下的内容还是会被追踪到,就像下图这样生成一大坨完全看不懂、用不到的文件,而更可气的是它还给我追踪到并展示出来,这让我去找需要提交的那一个变更文件显得有些费时(是的,改一个文件,编译生成一坨,然后去找改的那个)

当然,在我还不知道为何会造成这种情况之前,我也不能如此毫无效率的在一大堆文件里去找我需要的那一个文件呀,这样太耗时了,因此这里我自己给自己提供了两种解决方法:

  • 指令提交,add需要提交的那个文件即可,然后其他文件回退
  • 图示化操作,在修改完文件后,先将变动的文件勾选上,再编译,然后其他文件回退

我是比较钟爱图示化操作的,谁叫它方便呐,但是遇到这种情况确实也很令人头大,虽然在上面的方法下,不会造成太大的影响,但是影响美观、影响心情确实是必然的呀~

所以,我还是决定去一探究竟......

解决

首先,需要排除的便是.gitignore文件的问题,因为它已经确确实实的加入了build.gradle

接下来,便是思考为什么会出现.gitignore不生效的原因

但是,在这一步,我先去了解了一下.gitignore生效的时机,就是被加入到.gitignore的文件或文件夹什么时候才不会被追踪、会被忽略?

然后,一查便发现了问题所在:.gitignore文件只能忽略那些还没有纳入版本控制的文件,如果某些文件已经被纳入了版本控制中,则修改.gitignore将不能生效

哦,原来如此,也就是说,build.gradle文件已经被纳入版本控制的文件了,已经被追踪了,所以.gitignore管不到了,那要怎么解决?

反正我知道问题后的第一个想法便是,从头再重新提交,这次要有.gitignore文件,且里面要编写好需要忽略的文件

最后,解法也大差不差,但是没有严重到重新初始化项目重新提交的程度,只需要清空一下暂存区的缓存,然后再提交即可:

bash 复制代码
# 清空本地缓存
git rm -r --cached .

git rm -r --cached .

  • git:这是Git版本控制系统的命令行接口
  • rm:缩写形式,用于删除Git仓库中的文件或目录
  • -r:这个选项代表递归,意味着它将递归地删除目录及其内容
  • --cached:从Git索引中(也称为暂存区)中删除文件或目录不会影响工作目录中的文件
  • .(点号):这是git rm命令的路径参数,.代表当前目录及其所有内容

小结

如果意外地添加了不想由Git跟踪的文件,或者想要取消暂存的一些更改,就可以使用git rm --cached。这个命令将从Git索引中删除文件,但保留它们在工作目录中

强烈建议大家一定要养成在项目初始化时就编写好.gitignore文件的习惯!!!

相关推荐
程序媛Dev3 小时前
50.4k Star!我用这个神器,在五分钟内搭建了一个私有 Git 服务器!
运维·服务器·git
澈轩6 小时前
Git 用得好,下班走得早
git
人间造梦工厂7 小时前
Git Bash 别名
git
画个太阳作晴天12 小时前
解决 Android Studio 中 build 目录已被 Git 跟踪后的忽略问题
git
wjs04017 小时前
Git常用的命令
java·git·gitlab
原野风霜32417 小时前
Git使用总结
git
青草地溪水旁17 小时前
Git Bash 中 Git 命令的实用主义指南
git·bash
至善迎风18 小时前
版本管理系统与平台(权威资料核对、深入解析、行业选型与国产平台补充)
git·gitee·gitlab·github·svm
上单带刀不带妹1 天前
Git rm 命令与系统 rm 命令的区别详解
git
我的收藏手册1 天前
性能监控shell脚本编写
前端·git·github