git删除远程忽略文件并添加已忽略的文件到.gitignore
最近做项目时发现,代码上传远程仓库之后把应该要忽略的文件或目录给push上去了(如.idea/,*.iml文件),
这时候去编辑project目录下的.gitignore文件并添加忽略已经不起作用了,因为.gitignore只对从来没有commit过的文件起作用。
那应该怎么处理呢?
可以通过git命令从暂存区删除已提交的文件或目录(就是把本地缓存删除,改变成未track状态),操作示例如下:
git rm -r --cached .idea/vcs.xml
git rm --cached xxxx.iml
或
git rm -r --cached .idea
接着修改.gitignore文件,并且commit 将修改后的暂存区合并到HEAD中,然后push的远端主机,命令如下:
git commit -am "gitignore文件修改删除XXX文件"
git push
备注:
1、如果项目目录下没有.gitignore文件,就需要创建将.gitignore文件并加入git,并push到远程git库
git add .gitignore 或
git commit -am "gitignore文件提交"
2、常见的.gitignore文件内容含:
/target/
/.settings/
.classpath
.project
.idea/
*.iml
等
3、同时删除暂存区和工作区的文件
git rm -f xxx.iml 或git rm xxx.iml
4、错误提交到了版本库,需要回退到之前的某一版本时
在这种情况下,只是删除了工作区和暂存区的文件,是不会修改远程库的。这个时候,需要撤销版本库的修改提交。可以使用git reset命令。
git reset有三个选项,--hard、--mixed、--soft。
//仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID
//仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID
//彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID