一般来说,对于那些不需要加入git版本控制的文件/文件夹,我们会提前加入.gitignore文件中进行屏蔽。但有时候我们会忘记这一步就先commit and push了,比如笔者今天就不小心把idea工程中的.idea, out文件夹都提交了。

那有没有恢复什么方法呢?其实也是有的,分为四步:

  1. 编写 .gitignore文件
  2. 删除缓存区文件或文件夹,命令:git rm -r --cached
  3. 将本次改动commit
  4. 将本次改动push到远程仓库

以在idea项目中从git repo删除.idea文件夹为例,我们首先将其放入 .gitignore文件中,然后依次执行如下命令:

git rm -r --cached .idea
git commit -m 'remove .idea from repo'
git push origin master

此时我们的缓存区和远程项目中就没有 .idea文件夹啦!

PS: git rm命令的-r参数表示递归删除,主要是在删除文件夹时可以递归删除文件夹下面的文件或文件夹。


需要注意的是,此方法适用于我们需要删除缓存区或远程分支上的文件, 但本地项目又需要使用的情况。如果本地也用不到了,使用如下操作:

 git rm file_path
 git commit -m 'delete somefile'
 git push

这样,我们的本地项目、缓存、远程repo中就将这些文件/文件夹都删除了。


Welcome, and just relax!