解决IDE中无法忽略的非代码文件

说明:

正文:

  • 问题:
    • 有时候发现IDE(比如pycharm)中非代码文件(比如PYCHARM自己的“.idea”目录下的文件),因为IDE而总是变化,而总是要求被commit;
    • 你无法对这些文件应用ignore来忽略,从而不让他提交到远端GIT;
  • 分析:
    • GIT的本地忽略设置(.gitignore)必须保证git的远程仓库分支上没有要忽略的这个文件,如果远程分支上存在这个文件,则本地忽略无效,即便在ignore里设置了也没用;
    • 有人说这是git的bug,但也许GIT本来也是这样设计,或故意如此的;
  • 解决:
    • 1.确保本地正确安装了可用的GIT环境,尤其是可在在WIN10目录下运行“GIT BASH HERE...”(linux类似,可能更方便清晰些);
    • 2.在OS层,不要在IDE内。先拷贝备份目录“.idea”;(其他文件是类似的,这里以pycharm的IDE文件所在目录“.idea”来举例)
    • 3.在源码目录进入“GIT Bash Here...”, 删除“.idea”,并提交改动到远端GIT仓库;
  cd .idea //进入目录
  rm -rf *  //递归删除文件及子目录
  cd ..  //退到上级目录
  rmdir .idea     //删除.idea文件夹
  git status //查看git状态,此时git会俘获到删除了若干文件的情况,并列出
  git add . //将改动提交到stage
  git commit -m '我们在IDE外删除了非源码的IDE自有文件并通过gitbash提交到远端'
  • 4.找到源码根目录下面的文件".gitignore"(没有请新建),添加一行“.idea”表示忽略此目录下所有文件;
    • 4.a. 这句刚才不起效,现在远端GIT仓库删除后,对本地再次用忽略策略,会起效;
  • 5.将本地保存的.idea文件夹,拷贝回到源码目录,因为IDE(pycharm)需要,然后从IDE打开项目,再次选择IDE的某菜单来commit提交,会发现不再列出这些忽略的IDE文件了;
  • 6.世界再次清净下来!
  • 补充:
    • 因为git远端仓库的平台,比如全球著名的github,中国最大的gitee码云,还有私服第一的gitlab等,他们都支持online删除源码文件。
    • 这样就提供了另一个方便的做法。
      • 远端删除IDE等类似非源码但频繁变化,尤其是多人冲突的文件。
      • 然后本地备份一下。
      • 在IDE外pull拉已经删除IDE文件的remote远端git仓库。
      • 增加排除IDE文件规则到项目的‘.gitignore’文件。
      • 最后拷贝回IDE文件,打开IDE继续工作并查看git操作是否正常。
      • 下次commit,IDE不会再提升提交IDE文件了。