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

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

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

Created by Marydon on 2023-09-26 16:43

说明:如果只是想删除远程仓库当中的target目录,直接看4.删除远程仓库的target目录

1.情景展示

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

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

怎么办?

2.具体分析

.gitignore文件生效的前提:必须位于项目的根目录下

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

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

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

说明:.gitignore文件只适用于尚未跟踪的文件,所以,我们需要两大步骤。

第一:将不需要的提交的本地文件,搞成未追踪状态;

第二,更新.gtignore文件。

3.解决方案(太过啰嗦,建议直接看第6项)

准备工作:

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

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

说明:

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

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

在idea当中运行git命令

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

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

git rm -r --cached .

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

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

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

示例

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

第三步:将本地所有文件添加到本地缓存区

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键回车运行。

说明:

如果出现上述关于“行分割符”的警告信息,可以忽略不管,它这是提示的是要忽略的文件所用的行分隔符会被替换成CRLF。

再次执行git add .命令。 

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

说明:

第二步和三步如果颠倒的话,会导致.gitignore文件增加到缓存当中的不是最新内容,进而导致第4步提交失败。

出现这种情况,需要我们再次执行一下:git add .,就可以了(然后再次执行第四步操作)。

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

git commit -m 'update .gitignore'

说明: -m指令是提交说明,后面跟的是:此次提交内容的说明(备注)。

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

如出现以上错误:

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 .

执行第二步(修改.gitignore文件)。

执行第三步。

执行第四步。

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

此时,返回idea。

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

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

执行第五步

git push

网上只有前4步。

执行完第4步只是本地仓库有效,然而,远程仓库,别人在提交代码时,仍然会出现一坨乱七八糟的文件。

如果想要远程仓库也生效,我们需要将其进行推送。

 

回车运行。

依次输入用户名和密码。

最终结果示例:

说明:

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

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

另外,小组其它成员也需要更新一下项目,才会在本地生效。

4.删除远程仓库的target目录

当我对项目进行clean,compile之后,发现:

这一坨代码又出现了。

怎么办?

从这里就可以判断:远程资源库存在target目录

登上远程仓库,发现项目当中存在target目录,怎么办?

清空target目录

打开maven视图,找到带(root)的模块。

通过clean,清除项目当中的target目录。

这样一来,项目当中的target目录都被删除啦。

然后,将其提交到远程仓库上。

选中项目名,点击提交。

切换到提交视图,点击“Commit  And Push”。

然后,对项目进行重新编译。

这时,项目将会重新生成target目录,并且,编译好的文件,将被重新放到target目录下。

然后我们重新点击提交。

此时,正常情况下,提交的视图,应该没有任何target目录下的文件。

 

如果出现下图情况,那就没办法了

但是,这些文件又出现了,只不过这次是出现在:Unversioned Files目录下。

最终,还是没能解决。

清空远程仓库的target目录后,本地的target目录就变成了未追踪状态。

还是没有解决,怎么办?

还有一种可能就是项目原先存在的.gitignore文件有问题

打开文本编辑器,将过滤规则复制到新建文本当中。

将文件字符集设置成UTF-8,文件名保存为:.gitignore。

然后将其复制到项目根目录下。

直接点击工具栏的提交按钮。

切换到提交视图。

如果该项目当前提交的文件只有这一个,那就说明这个文件起作用啦。

搞了一天的问题终于解决了,以后,再提交代码的时候,终于不再出现target目录下面的文件啦。

双击打开,我看到之所以远程仓库上的.gitignore文件之所以不生效,是因为:文件字符集有问题,可能导致git无法识别。

最后,我们把这个文件推送到远程仓库就可以啦。

到这,基本上都能解决啦。

当然,如果还是无法解决的话,那就无能为力了。

如果在提交代码的时候,不想看到这些烦人的target目录,只能把target目录clean掉,再提交;

提交完,再手动重新编译项目,生成class文件

说明:被.gitignore文件忽略的内容,在idea当中,被过滤掉的文件名会变色。

如下图所示。

5.拓展

如果判断.gitignore文件的字符集是否有问题?

方式一(太笨了,不推荐使用)

切换到Terminal窗口,输入以下指令。

git echo test >> .gitignore

意思是:

在.gitignore文件当中追加内容:test。

正常情况下,是没有问题的。

(需要先刷新文件)

如果.gitignore文件字符集有问题,test有可能将会变成乱码。

(需要先刷新文件)

这也就是说:git根本无法正确解析.gitignore文件当中的内容,这样一来,里面定义的过滤(提交时要忽略的内容)规则,自然无法生效。

方式二:使用notepad++打开

.gitignore文件过滤规则说明

如果只需过滤掉.idea目录下的shelf目录,过滤规则为:

.idea/shelf/

如果过滤规则为:.idea,它将会忽略.idea目录及目录下所有内容。

2024年1月15日17:21:38

如何忽略iml文件的提交?

同样地,按照target目录的思路走。

第一步,将本地所有的iml文件删掉。

第二步,将其操作更新值远程仓库。

此时,远程仓库当中,已经不存在iml文件啦。

第三步,撤销本地iml文件的删除操作。

第四步,将*.iml添加到.gitignore文件当中,并将其提交至远程仓库。

第五步,在idea当中,运行命令:git rm -r --cached .。

此命令将会清空本地git缓存。

第六步,运行命令:git add .。

此命令将会所有文件添加到本地git缓存当中。

第七步:运行命令:git status。

如果出现没有需要提交的文件,就大功告成啦。

当然,如果还是出现需要提交iml文件

就需要重写一个.gitignore文件,将其覆盖掉该项目的此文件。

然后,重复第4步到第7步。

2024-08-13 16:14:49

6.修改.gitignore文件不生效的解决方案

第1步:确保.gitignore文件放置在项目的根目录下面。

如果根目录下面没有,请创建。

文件名为:.gitignore。

第2步:设置好过滤规则(要忽略提交的文件)

第3步:确定.gitignore文件的字符集为UTF-8

选中.gitignore文件,右键,打开于,选择“资源管理器”。

再次选中该文件,右键,打开方式,选择notepad。

打开之后,在窗口底部会显示该文件的字符集。

只要字符集不是UTF-8,鼠标悬浮其上,右键选择“UTF-8”即可完成字符集切换。

改完之后,保存。

第4步:更新项目

第5步:提交并推送.gitignore

说明:如果项目有修改的代码,最好和.gitignore分两次提交和推送。

第6步:清空文件缓存区。

打开终端窗口,执行以下命令。

git rm -r --cached .

按Enter键等待执行完毕。

第7步:将文件重新放置缓存区。

git add .

 以上关于行分隔符的警告信息,不用管。

说明:

当我们将.gitignore文件提交后,需要更新本地缓存区的内容,否则,即使.gitignore文件已经提交,你的本地依旧会将需忽略的内容显示在提交窗口。

也就是说:第6步和第7步不能省略。

如果显示需要忽略的内容,请往下看。

第8步:

首先,确定忽略规则是否有效和.gitingore的内容变化已经推送至远程仓库;

其次,确定已经执行了第6步和第7步;

最后,如果要忽略提交的文件已经在远程仓库中存在,我们需要操作远程仓库,并将其删掉才可以。

写在最后

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

 相关推荐:

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(1138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2017-09-26 javaWeb 批量下载图片
2017-09-26 base64编码
2017-09-26 css控制打印时只显示指定区域
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。