1.什么是.idea文件夹

因为IntelliJ IDEA是JetBrains最早推出的IDE(JetBrains一开始叫IntelliJ),因此使用IDEA作为配置文件夹的名称。按照这个SO问题里最高票答案的猜测,或许IntelliJ IDEA这个名字的含义是这样组成的:

  • Intelli ===> Intelligent

  • J ===> Java

  • Idea ===>IDE that is Advanced or Idea just means idea( I have a good idea ...like this ) ...

2.是否应该把.idea提交进Git仓库

如果你想让其他使用相同IDE的用户可以更方便或规范的对项目进行开发,那么就把它提交到Git仓库中。比如,你可以设置文件模板(.idea/fileTemplates),定义代码风格(.idea/codeStyleSettings.xml),定义检查器(.idea/inspectionProfiles/),这样其他开发成员可以很方便的上手项目,这会比写在“贡献指南”约束性强一些。

如果你觉得Git仓库不应该包含和项目本身无关的文件,那么也可以不将它提交到Git仓库中。

3.正确的提交方法

当然,将.idea目录整个提交到Git仓库的行为并不可取。因为.idea目录下的文件中有包含隐私的内容(比如你的文件操作变动、用户词典、系统环境变量、数据库密码等等),或是临时生成的文件,这些文件对项目其他的参与者没有用处,而且会泄露你的隐私或是影响正常开发。

如果你选择将.idea目录提交仅Git仓库,那么需要稍微多付出一些工作。

按照JetBrains官方的建议,在使用VCS时提交.idea文件夹应该遵循下面的原则:

1. 分享下面的文件:

除了workspace.xml、usage.statistics.xml和tasks.xml以外.idea目录下的所有文件 所有可以被在不同模块目录下定位到的.iml模块文件(适用于IntelliJ IDEA)

2. 谨慎分享下面的文件:

Android artifacts that produce a signed build,因为它们包含keystore密码(前半句不理解,暂时保留原文)

IntelliJ IDEA 13 和之前的版本中的dataSources.ids和datasources.xml文件,它们包含数据库密码

3. 避免分享下面的文件:

对于使用Gradle或Maven的项目,避免分享.iml和.idea/modules.xml文件,因为它们会在导入时生成gradle.xml文件

用户字典(dictionaries文件夹)

.idea/libraries目录下的XML文件,因为它们会从Gradle或Maven项目中生成

推荐提交

  • .idea/vcs.xml

  • .idea/fileTemplates/

  • .idea/inspectionProfiles/

  • .idea/scopes/

  • .idea/codeStyleSettings.xml

  • .idea/encodings.xml

  • .idea/copyright/

  • .idea/compiler.xml

总结

如果你不想在Git仓库中提交IDE相关的配置文件,那么你可以忽略.idea文件夹;相反,你也可以有选择的把.idea目录下的文件提交进Git仓库。也就是说,项目Git仓库中是否包含.idea文件夹与程序员的开发水平并没有直接关系。我感觉不提交还是对的。

对Git仓库里的.idea进行研究------引用的更多相关文章

  1. 将远程git仓库里的指定分支拉取到本地(本地不存在的分支

    将远程git仓库里的指定分支拉取到本地(本地不存在的分支) https://www.cnblogs.com/hamsterPP/p/6810831.html

  2. [译]如何撤销git仓库里的所有修改?

    原文来源:https://stackoverflow.com/questions/29007821/git-checkout-all-the-files 问: 如何撤销我在我git仓库所做的所有修改? ...

  3. 如何强制文件上传git仓库里

    1.首先在本地创建一个文件夹里写入一个txt文件 2.然后复制你仓库的地址 3.平时正常操作都是这样上传不上 4.没关系我们使用强制上传 代码是 git push -f “你的仓库地址”   mast ...

  4. (转)如何将本地git仓库上传到GitHub中托管+实践心得

    Git——新手入门与上传项目到远程仓库GitHub(转) - Chen_s - 博客园http://www.cnblogs.com/Chenshuai7/p/5486278.html 注意的问题: 1 ...

  5. Git学习记录--git仓库

    Git是一款强大的版本控制工具,与svn相比git的分布式提交,本地仓库等在使用时确实比较方便.当然两者之间各有优劣,我在这里不多做比较.由于之前少有接触git,只是零星大致地了解一点,所以找时间系统 ...

  6. 添加现有项目到git仓库

    情景: 做了一个项目,需要放到git仓库里 为什么做这个记录? 我们一般的操作是先有仓库, 然后 git clone  到一个空文件夹.     然后再这个空文件夹里加项目文件.  再git push ...

  7. Git 仓库拆分

    方案对比 subtree 使用命令 git subtree split -P dirPath -b branchName 将目标文件夹的代码都保存到指定分支.试了下,该方案虽然保留了 commit,但 ...

  8. GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?

    问题背景:     最近在重新整理手中的一个项目,目前该项目分为PC项目,手机项目,某第三方接口项目,第三方接口服务项目和手机项目     因为之前规划的原因,原来的四个项目是分两个解决方案来管理的 ...

  9. 稀疏检出-使用git检索出仓库里的某一个目录文件,而不是整个仓库的所有文件

    具体工作意义是从某一个Git仓库 克隆时,只克隆检测出这个仓库里的某些文件夹内容,而不是跟平常那样把整个仓库的内容都克隆下来 从1.7.0版本开始git提供稀疏检出的功能.所谓稀疏检出就是本地版本库检 ...

随机推荐

  1. javase程序设计上机作业1

    package javaxgp.teacher.test; import java.math.BigInteger; import java.util.Scanner; import java.uti ...

  2. 用番茄工作法提升工作效率 (四)ToDoList的持续优化

    一.写在前面 前面三篇文章,系统介绍了我如何使用番茄工作法,并结合“自制”的桌面ToDoList工具来实现自己的任务管理. 自制ToDoList的初衷是自我管理,但是好友看到我的桌面(程序)后,建议我 ...

  3. java反射机制学习笔记

    内容引用自:https://www.cnblogs.com/wkrbky/p/6201098.html https://www.cnblogs.com/xumBlog/p/8882489.html,本 ...

  4. python 三元运算、列表推倒式、字典推倒式、生成器生成式

    1.三元运算 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推倒式 #1.示例 egg_ ...

  5. py3 base64加密

    import base64 #字符串编码: encodestr = base64.b64encode('abcr34r344r'.encode('utf-8')) print(str(encodest ...

  6. vue.js的v-bind

    v-bind v-bind  主要用于属性绑定, html中的标签内: <div class="control-group"> <label class=&quo ...

  7. 新版 Scrapy 中 sys.conf.settings 的替代方法

    新版 Scrapy 中 sys.conf.settings 的替代方法 在 scrapy 项目目录下,有个 settings.py 文件,此文件是用来存放爬虫项目的各种配置,比如说 MongoDB 的 ...

  8. RocketMQ高性能原理(pushConsumer,CommitLog,ZeroCopy)

    1. Rocketmq消费模型(实时性) 常见的数据同步方式有这几种: push:producer发送消息后,broker马上把消息投递给consumer.这种方式好在实时性比较高,但是会增加brok ...

  9. 缓存---CDN(内容分发网络)

    4.CDN   内容分发网络(content distribution network,CDN)是一种互联的网络系统,它利用更靠近用户的服务器从而更快更可靠的将静态资源分发给用户. cdn主要有以下优 ...

  10. git常用命令之log

       查看提交日志记录 基础命令:  git log commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon < ...