Should I ignore the .idea folder when using PyCharm with Git?
PythonGitPycharmPython Problem Overview
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?
Python Solutions
Solution 1 - Python
Ignoring the whole .idea folder is not necessarily the best idea. There's a number of similar discussions here about this.
- https://stackoverflow.com/questions/7060727/how-to-deal-with-intellij-idea-project-files-under-git-source-control-constantly
- https://stackoverflow.com/questions/3041154/intellij-idea-9-10-what-folders-to-check-into-or-not-check-into-source-contro
- https://stackoverflow.com/questions/5362816/should-the-idea-folder-be-kept-under-source-control
But I suggest to check the official FAQ on this matter.
Solution 2 - Python
> 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 - Python
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
Solution 4 - Python
I found some issue when include whole .idea/
directory into project.
If you push to git repo including .idea/
directory, and clone that project on other machine
with pycharm, pycharm can't recognize the project appropriately.
After delete .idea/
directory, pycharm recognize the project well.
Solution 5 - Python
The .idea/ folder is just the way that JetBrain's stores data. It's in IntelliJ and PyCharm, so, yes, it can be ignored.