「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」
问题
在我们的日常开发过程中,有时候会不小心把一些不必要的文件提交到git中,比如项目中的某个文件app.iml,idea文件夹的下面的配置文件,*.log, *.class 文件 ,并push到远程服务器server了,这时发现app.iml不应该被git管理, 同事们下载这个文件以后会导致项目工程无法加载,错误加载,不能正常使用等多个问题,一旦当这些文件同步到团队每个开发人员那里,这时你再在.gitignore文 件里面添加"app.iml"尝试进行忽略,这个时候已经没有办法忽略这个文件了。因为.gitignore只对从来没有commit过的文件起作用。经过我多次尝试找到了如下两种方法,大家这个时候可以尝试可以通过以下2个方法来忽略掉这个文件。
建议不要在idea工具上执行以下操作,最好使用Git命令操作
方法一 本地删除宰同步到远程仓库:
-
做事之前先备份,以防操作失误,把同事或者自己辛辛苦苦的敲的代码误删除可就不好了。
-
git rm --cached app.iml //从版本库中rm 文件,working dicrectory中仍然保留,如果要删除目录下所有文件包括子目录中的 git rm -r --cached directory_name
-
在.gitignore中添加要忽略的文件
-
把修改的文件commit并且push到服务端
-
从git上重新拉取这个项目。
方法二 远程仓库先删除再同步到本地:
-
直接在远程仓库上把这个文件删除
-
先把本地文件备份一下,再把pull一下远程分支
-
这时候本地要忽略文件已经被删除掉,再把原来备份文件拷过来
-
这时候千万不要把刚拷贝过来的文件添加到git中
-
把刚拷贝的文件添加到.gitignore文件中
-
再推到远程仓库即可