在使用PyCharm与Git时,我应该忽略.idea文件夹吗?
我在PyCharm中看到了关于Git集成的内容,然后在PyCharm里创建了一个Git仓库。我这么做是因为我希望PyCharm能知道是否应该忽略.idea
文件夹,如果应该的话,它会自动创建一个.gitignore
文件,并在里面加上.idea/
这一行。
但是它并没有这样做,所以我就以为.idea
文件夹不需要被忽略。不过,我随便搜索了一下,找到了一个人的示例.gitignore
文件,在这里,里面明确地忽略了.idea
文件夹。
所以,我的问题是,.idea
文件夹到底应该被忽略吗?
6 个回答
为了确保一切干净利落,最好不要把 .idea
文件夹放进版本控制。
我以前一直这么做,结果在新电脑或新的开发环境上设置项目时总是麻烦,因为项目越来越复杂。现在我学会了怎么安全地处理这个问题,真是太好了。
根据上面的建议,我打算只把 .idea/workspace.xml
加入 .gitignore
,而不是整个 .idea
文件夹。
虽然在 PyCharm 的资源管理器里看不到 .idea
文件夹,但它里面已经有自己的 .gitignore
文件,这个文件会和 IDE 一起维护。我不需要特别把它的路径放进 .gitignore
,因为它自己会处理好。
这里是它的内容:
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
如果里面有任何敏感信息,我还是会仔细检查我的 git 提交,但我们本来就应该这样做,对吧?
我发现一个问题,当把整个 .idea/
文件夹放进项目里时,会出现一些麻烦。
如果你把包含 .idea/
文件夹的项目推送到 git 仓库,然后在 另一台机器
上用 pycharm 克隆这个项目,pycharm 就无法正确识别这个项目。
但是在 删除 这个 .idea/
文件夹后,pycharm 就能很好地识别这个项目了。
分享你的项目设置并不一定是坏事,但有一些例外和潜在问题你需要注意。
workspace.xml
文件包含了很多用户特定的设置,比如环境变量、光标位置和Python SDK的位置。- 环境变量可能会包含一些私人信息,比如用户名和密码。
dictionaries
文件夹里存放的是自定义的拼写,如果两个开发者有相同的名字,可能会产生冲突。.idea
文件夹是PyCharm特有的,这意味着使用其他开发工具的开发者可能会导致项目不同步。- IntelliJ的官方文档中有一些警告,说明哪些特定文件不应该被分享。
如果你决定分享.idea
,IntelliJ的官方文档给出了以下建议:
[.idea]格式是所有最新IDE版本默认使用的。你需要分享以下内容:
- 项目根目录下.idea文件夹中的所有文件,除了存储用户特定设置的workspace.xml和tasks.xml文件。
- 所有的.iml模块文件,这些文件可能位于不同的模块目录中(适用于IntelliJ IDEA)。
注意分享以下内容时要小心:
- 生成签名构建的Android工件(会包含密钥库密码)。
- 在IDEA 13及之前版本中,dataSources.ids和datasources.xml可能包含数据库密码。IDEA 14 解决了这个问题。
你可能考虑不分享以下内容:
- .iml文件,适用于Gradle或Maven项目,因为这些文件在导入时会自动生成。
- gradle.xml文件,查看这个讨论。
- 用户的dictionaries文件夹(以避免如果其他开发者有相同名字而产生冲突)。
- .idea/libraries下的XML文件,如果它们是从Gradle或Maven项目生成的。
.idea目录下的所有设置文件都应该放在版本控制中,除了workspace.xml文件,因为它保存的是你个人的偏好设置。workspace.xml文件应该被标记为< a href="https://www.jetbrains.com/help/pycharm/configuring-ignored-files.html" rel="noreferrer">在版本控制系统中忽略。
进一步解释一下,workspace.xml
文件包含了用户特定的工作区偏好设置。这些设置包括环境变量、最近访问的文件和光标位置。
完全忽略整个 .idea 文件夹并不一定是个好主意。关于这个话题,这里有很多类似的讨论。
- 如何处理在 Git 源代码管理下不断变化的 IntelliJ IDEA 项目文件?
- IntelliJ IDEA 9/10,哪些文件夹应该纳入源代码管理,哪些不应该?
- .idea 文件夹应该纳入源代码管理吗?
不过,我建议你查看一下官方常见问题解答,了解更多信息。