在使用PyCharm与Git时,我应该忽略.idea文件夹吗?

88

我在PyCharm中了解了Git集成,并从PyCharm创建了一个Git仓库。我这样做是因为我希望PyCharm知道是否应忽略.idea文件夹,如果是这样的话,它会自动在其中创建一份包含.idea/.gitignore文件。

但它没有这样做,所以我假设我不应该忽略.idea文件夹。然而,我进行了快速搜索并找到了某人的.gitignore示例文件,在这里,它明确地忽略了.idea文件夹。

所以,我的问题是,是否应忽略.idea文件夹?


由于通常情况下,您可以在PyCharm中将文件夹直接打开作为项目,因此我认为您肯定不需要将其纳入版本控制... 也就是说,这样做也不会有任何坏处(即将其放入Git中除了可能向世界展示一些您的文件夹结构外,没有其他负面影响)。 - Joran Beasley
https://dev59.com/t2445IYBdhLWcg3wGWd7 - Mauricio Scheffer
1
可能是是否应该将.idea文件夹保留在源代码控制下?的重复问题。 - Trilarion
注意:IntelliJ的文档明确警告不要分享workspace.xml。有关更多详细信息,请参阅我的回答Artem的回答 - Stevoisiak
查看 gitignore.io 推荐的适用于 IntelliJ 平台的文件。 - ddavison
6个回答

43

注意:IntelliJ的文档明确警告不要共享workspace.xml。有关更多详细信息,请参阅我的回答Artem的回答 - Stevoisiak
6
这不是一个好的回答。首先,你提供的所有内容都是链接(可能会在未来失效)。其次,这让读者自己去完成工作,而不是像Stack Overflow回答一样直接给出答案。 - Charlie Parker
这是一个非常不明确的回答。我想要补充一下,我个人会排除掉 .idea 文件夹,如果里面有其他人需要的文件,我会检查这些文件并专门提交它们。在 git 方面,我认为只提交必要的文件比把所有东西都放进去更好。 - MarMar

37

在.idea目录中,除了存储本地偏好设置的workspace.xml文件外,所有设置文件都应该放入版本控制。需要将workspace.xml文件标记为VCS忽略文件

-PyCharm 2017.3项目文档

进一步解释一下,workspace.xml包含特定于用户的工作区偏好设置,包括环境变量、最近访问的文件和光标位置等信息。


并且为了明确起见,环境变量可以存放真实的密码、API密钥等。小心! - Raúl Moreno

13

虽然分享项目设置本身并不是一个坏主意,但是有几个例外和潜在问题需要注意。

  • workspace.xml 文件包含各种用户特定的设置,例如环境变量、光标位置和 Python SDK 位置。
    • 环境变量可能包含私人数据,例如用户名和密码。
  • dictionaries 文件夹包含自定义拼写,如果两个开发人员具有相同的名称,则可能会导致冲突。
  • .idea 文件夹是专门针对 PyCharm 的,这意味着使用不同 IDE 的开发人员可能会导致项目不同步。
  • IntelliJ 的官方文档 包括若干个不应该被分享的特定文件的警告。

如果你决定分享 .ideaIntelliJ 官方文档 给出了以下建议:

[.idea] 格式默认由所有最近版本的 IDE 使用。以下是您需要分享的内容:

  • 位于项目根目录下 .idea 目录下的所有文件,除了 存储用户特定设置的 workspace.xmltasks.xml 文件。
  • 可以位于不同模块目录中的所有 .iml 模块文件(适用于 IntelliJ IDEA)。

请注意不要分享以下内容:

  • 生成签名版本的 Android 构件(将包含密钥库密码)。
在IDEA 13及之前的版本中,dataSources.idsdatasources.xml文件可以包含数据库密码。IDEA 14解决了这个问题
在基于Gradle或Maven的项目中,您可以考虑不共享以下文件:
  • 针对Gradle或Maven生成的.iml文件,因为这些文件将在导入时生成
  • gradle.xml文件,请参见此讨论
  • 用户dictionaries文件夹(以避免其他开发人员具有相同名称时的冲突)
  • 基于Gradle或Maven项目生成的.idea/libraries下的XML文件
  • 来源:JetBrains - 如何管理版本控制系统下的项目

    3
    如果你使用Jetbrains的.gitignore文件,我相信大部分这些问题都可以得到解决。https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore - Poulad

    3

    将整个.idea/目录包含到项目中时,我发现了一些问题。

    如果您将.idea/目录包含在Git仓库中,并在使用pycharm的其它机器上克隆该项目,pycharm可能无法适当地识别该项目

    删除.idea/目录后,pycharm能够正确识别该项目。


    1

    为了获得最新鲜的干净开始,请勿将 .idea 存储在版本控制中。

    我做了很多年,当项目变得更加复杂时,在新的 IDE/机器上设置起来很麻烦。我很高兴学会了如何安全地处理。

    基于以上建议,我打算只 .gitignore .idea/workspace.xml,由之前的 .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提交记录,但我们已经这样做了,对吧?

    1

    .idea/ 文件夹只是JetBrain存储数据的方式。它在IntelliJ和PyCharm中都存在,所以可以忽略它。


    1
    我不同意 http://stackoverflow.com/questions/24516814/pycharm-with-git-shall-i-ignore-the-idea-folder#comment67434330_24516850 - Nam G VU

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接