如何删除远程仓库当中的class文件?(修改.gitignore文件不生效的解决方案)

发布时间 2023-09-26 16:50:52作者: Marydon

1.情景展示

如上图所示,git项目在本地提交的时候,会多出很多无用的文件。

明明.gitignore文件当中有,或者.gitignore刚开始没有,我们把需要过滤掉(不需要提交)的文件增加了进去,但是却不生效。

怎么办?

2.具体分析

 .gitignore 只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

由于新创建的文件已经出现在git本地仓库的缓存,所以.gitignore就失效了。

解决办法就是:清空一下git仓库的缓存,重新提交一次就好了。

3.解决方案

保险起见,进行如下操作步骤时,我们可以先做好以下准备:

第一,把本地仓库更新成最新内容;

第二,将本地代码提交到远程仓库。

第三,新建一个本地分支,这样即使操作失误,对远程仓库也基本上没有影响。

说明:

运行git命令有两种方式,一种是在idea当中运行,另一种是通过git操作窗口运行。

在idea当中操作,经常会报错,不推荐使用。

在idea当中运行git命令(不推荐使用)

在idea当中,打开Terminal命令窗口,分步骤执行以下操作即可。

第一步:先把暂存区的文件删除(改变成未被追踪状态)

git rm -r --cached .

等待执行结束,项目当中所有文件,将被从本地仓库缓存区移除。

所有文件的状态,都将变成:新增文件且未提交状态

第二步:本地添加或者修改正确的.gitignore文件

示例

#忽略所有target目录
target/
#忽略行尾结束符变化(CRLF与LF)
.gitattributes
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### Eclipse ###
.classpath
.project
.settings

#日志
*.log

第三步:添加本地所有要提交的文件。

git add .

如果不出意外的话,所有文件将会被添加到本地仓库当中。

如出现上述报错信息:

warning: LF will be replaced by CRLF in dc/assembly/dc-boot/target/maven-status/maven-compiler-plugin/compile/java-compile/createdFiles.lst.
The file will have its original line endings in your working directory

解决办法如下:

git config --global core.autocrlf false

在Terminal命令窗口输入以上命令,按Enter键回车运行。

再次执行git add .命令。 

命令执行结束,所有文件,都将变成已修改状态

第三步:提交更新后的.gitignore文件

git commit -m 'update .gitignore'

正常情况下,运行此命令是没有问题的。

如出现以上错误:

error: pathspec '.gitignore'' did not match any file(s) known to git

解决办法如下:

通过git-bash.exe运行git命令(推荐使用)

找到本地git的安装目录,双击运行git-bash.exe。

切换到此项目所在目录。

说明:路径不能使用反斜杠\。

错误示例:D:\workspace-idea\dc

正确示例:cd d:/workspace-idea/dc

重复上述操作步骤。

 

第一步就报错,这意思是:.gitignore文件已经被放进缓存区,需要强制移除。

用以下命令代替:

git rm -r -f --cached .

执行第二步。

执行第三步。

等待操作结束即可。(会展示更新多少个文件,新增多少,删除多少) 

此时,返回idea。

选中当前项目名,点击提交,来到提交视图。

这次,本地将再无需要提交的文件了(真清爽!)。

说明:

给.gitignore文件新增内容时,通常需要过滤的文件内容已经被纳入到版本管理当中。

所以说,一般情况下,当我们需要新增过滤条件时,就会需要重述上述操作步骤。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐: