Should I ignore the .idea folder when using PyCharm with Git?
I read about Git integration in PyCharm, and created a Git repository from PyCharm. I did this in PyCharm because I was hoping PyCharm would know whether the .idea
folder should be ignored, and if that's the case, it would automatically create a .gitignore
file with the line .idea/
in it.
But it didn't, so I assumed that I shouldn't ignore the .idea
foler. However, I did a quick search and found someone's example .gitignore
file, here, which clearly ignores the .idea
folder.
So, my question is, should the .idea
folder be ignored or not?
Solution 1:
Ignoring the whole .idea folder is not necessarily the best idea. There's a number of similar discussions here about this.
- How to deal with IntelliJ IDEA project files under Git source control constantly changing?
- Intellij Idea 9/10, what folders to check into (or not check into) source control?
- Should the .idea folder be kept under source control?
But I suggest to check the official FAQ on this matter.
Solution 2:
All the settings files in the .idea directory should be put under version control except the workspace.xml, which stores your local preferences. The workspace.xml file should be marked as ignored by VCS.
-PyCharm 2017.3 project documentation
To explain further, workspace.xml
contains user-specific workspace preferences. This includes environment variables, recently accessed files, and cursor position.
Solution 3:
While sharing your project settings isn't inherently a bad idea, there are several exceptions and potential issues you should be aware of.
- The
workspace.xml
file contains various user-specific settings, such as environment variables, cursor position, and Python SDK location.- Environmental variables may include private data, such as usernames and passwords
- The
dictionaries
folder contains custom spellings, which can cause conflicts if two developers have the same name. - The
.idea
folder is PyCharm specific, meaning developers using a different IDE can lead to project desynchronization. - IntelliJ's own documentation includes several warnings for specific files that shouldn't be shared.
If you do decide to share .idea
, IntelliJ's official documentation gives the following advice
[The .idea] format is used by all the recent IDE versions by default. Here is what you need to share:
- All the files under .idea directory in the project root except the workspace.xml and tasks.xml files which store user specific settings
- All the .iml module files that can be located in different module directories (applies to IntelliJ IDEA)
Be careful about sharing the following:
- Android artifacts that produce a signed build (will contain keystore passwords)
- In IDEA 13 and earlier dataSources.ids, datasources.xml can contain database passwords. IDEA 14 solves this problem.
You may consider not to share the following:
- .iml files for the Gradle or Maven based projects, since these files will be generated on import
- gradle.xml file, see this discussion
- user dictionaries folder (to avoid conflicts if other developer has the same name)
- XML files under .idea/libraries in case they are generated from Gradle or Maven project
Source: JetBrains - How to manage projects under Version Control Systems