git ignore für Intellji braucht es die .idea Dateien?

osion

Bekanntes Mitglied
Hallo

Ich habe folgende Frage:
1633188148077.png
Braucht es diese Dateien im git, wenn mehrere Leute an einem ganz einfachen Java-Projekt arbeiten (nur Java kein Maven oder so...). Ein paar Personen erhalten Meldungen betreffend modules.xml, dass dort ein Konflikt herscht.

Auf https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore habe ich folgendes gefunden:
1633188310818.png
Es ist aber nicht klar was ist wenn mehrere Leute an einem Projekt arbeiten.

Momentan
# From https://github.com/github/gitignore/blob/master/Gradle.gitignore
.gradle
/build/

# Ignore Gradle GUI config
gradle-app.setting

# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

# Cache of project
.gradletasknamecache

# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties



# From https://github.com/github/gitignore/blob/master/Java.gitignore
*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*


# From https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff:
.idea/workspace.xml
.idea/tasks.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml

# Sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml

# Gradle:
.idea/gradle.xml
.idea/libraries

# Mongo Explorer plugin:
.idea/mongoSettings.xml

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties


*.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
 
IntelliJ sollte in .idea ein .gitignore anlegen, das eben dafür sorgt, dass Benutzerspezifische Dinge nicht mitgegeben werden. Das ist dann bei mir z.B. ein:
Code:
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

Aber die Dateien sind ja euer Projekt - daher sollte es meiner Meinung nach durchaus mit in git gespeichert werden.

Aber natürlich kann es zu Konflikten kommen, wenn zwei Leute etwas anpassen am Projekt. Das muss man dann irgendwie mergen -> Viel Spass!

Daher ist meine klare Empfehlung: Nutzt Maven oder Gradle. Da habt ihr dann ein klar verständliches Projektfile (oder Files) in dem Ihr leicht etwas mergen könnt (Ihr kennt die Einträge ja bzw. habt die Einträge ja selbst gemacht. Das ist nichts "magisches", das die IDE gemacht hat.)

Bezüglich modules solltet ihr aber in erster Linie Verweise auf iml Dateien haben. Die Datei sieht also relativ übersichtlich aus:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/SomeModule.iml" filepath="$PROJECT_DIR$/SomeModule.iml" />
    </modules>
  </component>
</project>
==> Somit sollte ein Merge hier nicht zu schwer fallen.
 
IntelliJ sollte in .idea ein .gitignore anlegen, das eben dafür sorgt, dass Benutzerspezifische Dinge nicht mitgegeben werden. Das ist dann bei mir z.B. ein:
Code:
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

Aber die Dateien sind ja euer Projekt - daher sollte es meiner Meinung nach durchaus mit in git gespeichert werden.

Aber natürlich kann es zu Konflikten kommen, wenn zwei Leute etwas anpassen am Projekt. Das muss man dann irgendwie mergen -> Viel Spass!

Daher ist meine klare Empfehlung: Nutzt Maven oder Gradle. Da habt ihr dann ein klar verständliches Projektfile (oder Files) in dem Ihr leicht etwas mergen könnt (Ihr kennt die Einträge ja bzw. habt die Einträge ja selbst gemacht. Das ist nichts "magisches", das die IDE gemacht hat.)

Bezüglich modules solltet ihr aber in erster Linie Verweise auf iml Dateien haben. Die Datei sieht also relativ übersichtlich aus:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/SomeModule.iml" filepath="$PROJECT_DIR$/SomeModule.iml" />
    </modules>
  </component>
</project>
==> Somit sollte ein Merge hier nicht zu schwer fallen.

Wir würden sonst ganz anders arbeiten, aber vom Studium haben wir klare Vorgaben. Ich habe jetzt gesehen, dass ein unerfahrener im Team verschiedene .gitignore gelöscht hat^^ Danke 🙂
 
Ich habe jetzt gesehen, dass ein unerfahrener im Team verschiedene .gitignore gelöscht hat
Also da kann ich euch nur raten, dass man genau darauf achtet, was für Dinge eingecheckt werden. Je nachdem, was für ein git Repository genutzt wird, kann man sich z.B. Emails mit entsprechenden Änderungen senden lassen.

Eine weitere Idee könnte sein, mit Branches zu arbeiten. Dann kann man da relativ frei tätig sein, ohne dass alle Leute betroffen sind. Es braucht dann aber einen, der sich da etwas mehr mit auseinander setzt und die Merges macht. Mag also ggf. Overkill sein - die Möglichkeit der Kontrolle gibt es ja auf jeden Fall auch (Und zur Not sieht man beim pull die Liste der geänderten Dateien und kann dann ggf. nachhaken/prüfen).
 
Also da kann ich euch nur raten, dass man genau darauf achtet, was für Dinge eingecheckt werden. Je nachdem, was für ein git Repository genutzt wird, kann man sich z.B. Emails mit entsprechenden Änderungen senden lassen.

Eine weitere Idee könnte sein, mit Branches zu arbeiten. Dann kann man da relativ frei tätig sein, ohne dass alle Leute betroffen sind. Es braucht dann aber einen, der sich da etwas mehr mit auseinander setzt und die Merges macht. Mag also ggf. Overkill sein - die Möglichkeit der Kontrolle gibt es ja auf jeden Fall auch (Und zur Not sieht man beim pull die Liste der geänderten Dateien und kann dann ggf. nachhaken/prüfen).
Ich habe es jetzt auch so eingestellt, dass nur noch Pull-Request möglich sind.
 

Zurück
Oben