解决Git添加.gitignore文件后不生效的问题

1. 问题描述

在这里插入图片描述

如上图所示,在已存在.gitignore文件且已经提交过的Git管理的项目中,其中.class.jar文件以及.idea目录内的内容全部都还是被Git管理了,可见.gitignore文件并没有生效。

2. 原因发现

.gitignore文件只能作用于 Untracked Files,也就是那些从来没有被Git管理过的文件,如果某些文件已经被纳入了版本管理中,则新增或者修改.gitignore文件是无效的。

3. 解决方案

为了保险起见,建议先在本地仓库进行一次git pull,目的是与远程仓库同步,然后再在本地新建并切换到新分支,我命名为hotfix

git pull origin master
git checkout -b hotfix

第一步:先将暂存区的文件删除(即全部变为未被追踪状态)

git rm -r --cache .

在这里插入图片描述
如上图所示,执行完第一步的bash代码以后在IDEA中可以发现,所有文件都变为了红色(未被追踪状态)。

第二步:添加或者修改正确的.gitignore文件
在与.git文件的同级目录下添加.gitignore文件。

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

第三步:再将本地所有文件添加至暂存区

git add .

第四步:切换到master分支,再将hotfix分支的内容合并到master分支

git checkout master
git merge hotfix

第五步:推送至远程仓库

git push origin master

推送完以后,通过git status指令查看本地库的状态,发现本地库很干净。再到Github仓库中查看文件,发现以前推送的.class.jar文件都被删除了,在本地修改文件时,.class.jar文件以及.idea目录内的内容也都不再被Git管理了??????。