Unlike Netbeans, in Jetbrains IDEs, the setting files related to user and team are mixed in the same folder that makes it tricky when you need to push them to git.
Th
I prefer not to check in the .idea
folder or .iml
files at all.
maven
or gradle
build files to carry specific setups.It's recommended not to commit all the .idea
folder because it's for configurations. Like the *.iml
file.
If I use Netbeans instead of Intellij, I don't want these config files. It is useless and maybe a little dangerous for conflicts.
I use both IDEA and Eclipse, but not Netbeans. I never commit any project files but make sure that I have a Maven build as the leading tool, then I can easily import the Maven project into any IDE with Maven support and also refresh from Maven once I change it. For Eclipse and IDEA this works beautifully.
My .gitignore file looks like this for all of my projects:
# Eclipse
.settings/
.classpath
.project
# IntelliJ IDEA
.idea/
*.iml
# Maven
target/
Plus other, project-specific files or directories.
After some investigation, I came up with https://github.com/salarmehr/idea-gitignore
#.idea/.gitignore
# ignore all .idea files ...
*
# except ...
# Version Control configuration
!vcs.xml
# how IDEA should treat the text files
!encodings.xml
# automatic code formatting
!codeStyleSettings.xml
# project-specific words
!dictionaries
!copyrights
!misc.xml
!sqldialects.xml
Above files should practically be identical for all team members.
Jetbrains has some official guidance on which files should not be checked in, and which files should probably not be checked in, depending on your usage. According to that page, you should check in all files in the .idea
directory except:
workspace.xml
tasks.xml
And probably also:
dictionary
subdirectoryWhile the particular answer may depend on your team's particular practices, in my experience, following that guidance generally results in correct separation of user settings and shared project configuration.
Some examples of files that should be shared, according to this guidance:
ant.xml
, which, if you use Ant to build your project, points IDEA to your build files and configures properties that should be used to build.vcs.xml
, which specifies the Version Control configuration for your projectencodings.xml
, which specifies how IDEA should treat the text files in your projectmodules.xml
, which points IDEA to each of your project's module configuration files, which should also be shared in your VCS.runConfigurations
subdirectory, which tells IDEA what it needs to do to run your applicationcodeStyleSettings.xml
, which, as you have alluded to, puts your whole team on the same page in terms of automatic code formattingDepending on your team's usage, there may be more or less, but those are some of the biggest examples.