Co do gitignore z folderu .idea?

495

Możliwe duplikaty:
Intellij Idea 9/10, jakie foldery należy sprawdzić (lub nie zameldować) w kontroli źródła?

Zacząłem używać WebStorm do tworzenia stron internetowych i nie jestem pewien, co dodać, a co wykluczyć z naszego repozytorium Git. Oczywiście niektóre pliki w .ideafolderze mają podlegać kontroli wersji, podobnie jak ustawienia biblioteki zewnętrznej ( jsLibraryMappings.xml), ale inne prawdopodobnie będą się często zmieniać i są specyficzne dla programistów (np workspace.xml.).

Jaki jest zalecany .gitignorewzorzec dla WebStorm / IntelliJ IDEA?

PS Istnieją już pytania na ten temat, ale zwykle skupiają się tylko na tym, czy dołączyć cały .ideafolder, czy też całkowicie go wykluczyć. Myślę, że niektóre pliki w .ideafolderze powinny być kontrolowane pod względem wersji, podczas gdy inne nie powinny i próbuję dowiedzieć się, które z nich.

Borek Bernard
źródło
8
Myślę, że umieszczenie plików IDE w systemie kontroli wersji to zły pomysł. Twój projekt będzie bardziej powiązany z konkretnym IDE i możesz przynieść problemy użytkownikom innych IDE. Miałem kilka projektów z plikami IDE w VCS i napotkałem komplikacje. Teraz mam w VCS tylko pliki maven, a IDEA generuje pliki projektów i wszystko jest w porządku.
chalimartiny
11
@chalimartines Wolę mieć wszystko, co niezbędne do kompilacji w repozytorium. Ponieważ nie używamy Maven, a także pojedynczego IDE, komplikowanie NIE byłoby mieć .ideaplików w VCS.
Borek Bernard,

Odpowiedzi:

430

Oficjalna strona pomocy powinna odpowiedzieć na twoje pytanie.

Więc .gitignoremożesz zignorować pliki kończące się .iwsna workspace.xmloraz tasks.xmlpliki i .

hifkanotiks
źródło
6
Doc zaleca „Podziel wszelkie .iml plików Module”, więc .gitignore z następujących dwóch linii powinno być dobrze: .idea / workspace.xml .idea / tasks.xml
Kevin Ortman
9
Poprawna składnia wydaje się być*/.idea/workspace.xml */.idea/tasks.xml
VSP
111
Lepszą składnią jest**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger
37
dlaczego jest **/lepszy niż */?
Vanquish46,
39
@ Vanquish46: Dokładniej, ** powtarza się przez wszystkie podfoldery, więc pliki spełniające kryteria są również ignorowane w podfolderach.
Syndog
233

Chcę tylko przedstawić nowszą alternatywę. Istnieje narzędzie online, które generuje .gitignorepliki na podstawie systemów operacyjnych, IDE i języków programowania, których możesz używać.

gitignore.io


EDIT Disclaimer: Nie kopiuj tego pliku, skopiuj plik wygenerowany przez stronę internetową, robią dobrą robotę, aktualizując go. To tylko przykład.

Wygenerowany plik IntelliJzawiera następujące elementy

# Created by https://www.gitignore.io/api/intellij

### Intellij ###
# 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

### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
GabrielOshiro
źródło
1
„Domyślnie sugerują ignorowanie wszystkiego od .idea/” - już nie. Aktualnie generowany plik .gitignore nie ma .idea/wpisu.
Mikołaj
1
Dlaczego miałbyś tak ignorować .idea/dictionaries?
@ Rhymoid Nie wiem dlaczego konkretnie, ponieważ nie jestem tym, który proponuje .gitignore. Po prostu pokazuję narzędzie, które to robi. Domyślam się, że jest to plik osobisty. Możesz dodać do swojego słownika rzeczy, które mogą nie być poprawne dla innych. Zwłaszcza podczas czyszczenia wiadomości LINT. Uważam, że jeśli zgadzasz się z innymi członkami swojej drużyny, możesz dodać to do swojego repozytorium git.
GabrielOshiro
2
Przepraszam, chciałem użyć ogólnego „ty”. Ale w przypadku podobieństw, które musi nadrobić, sensowne jest, aby mieć je w repozytorium źródłowym, ponieważ wpisy będą miały zastosowanie do wszystkich: słowniki są specyficzne dla treści projektu! Na przykład, pracując nad parserem dla C, wszyscy napotkają problem polegający na tym, że słowo „interpunkcja” jest błędnie oznaczone jako błędnie napisane ... chyba że udostępniasz słownik.
@ user824425 IntelliJ mówi, aby uważać na folder słowników użytkownika (aby uniknąć konfliktów, jeśli inny programista ma taką samą nazwę) - patrz intellij-support.jetbrains.com/hc/en-us/articles/…
nealmcb
28

https://www.gitignore.io/api/jetbrains

Utworzony przez https://www.gitignore.io/api/jetbrains

### JetBrains ###
# 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

### JetBrains Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml 
# *.ipr 
xgqfrms
źródło
2
OK! jeśli chcesz coś wczytać, możesz przejść do [ gitignore.io/](https://www.gitignore.io ), może być bardzo pomocne, aby łatwo znaleźć to, czego chcesz!
xgqfrms
1
Jest to pomocne, ale lepiej byłoby, gdybyś po prostu połączył się z plikiem - istnieją już różnice w wersji online.
Frankie Simon
14

Przez kilka lat byłem zwolennikiem używania specyficznego .gitignoredla IntelliJ z tą sugerowaną konfiguracją .

Nigdy więcej.

IntelliJ jest dość często aktualizowany, specyfikacje wewnętrznych plików konfiguracyjnych zmieniają się częściej niż bym chciał, a flagowiec JetBrains wyróżnia się w automatycznej konfiguracji na podstawie plików kompilacji maven / gradle / etc.

Tak więc moją sugestią byłoby pozostawienie wszystkich plików konfiguracyjnych edytora poza projektem i umożliwienie użytkownikom skonfigurowania edytora według własnych upodobań. Elementy takie jak styl kodowania można i należy konfigurować na poziomie kompilacji; powiedzmy, używając Google Code Style lub CheckStyle bezpośrednio w Maven / Gradle / sbt / etc.

Zapewnia to spójność i pozostawia pliki edytora poza kodem źródłowym, który moim zdaniem jest tam, gdzie powinien być.

Frankie
źródło
1
Właśnie o to mi chodzi, nie powinniśmy się męczyć .gitignoretylko dla JB, jak wyjaśniłem w mojej odpowiedzi.
nehem
7

Jetbrains udostępnia następujące programy .gitignore dla swoich programów

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/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

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

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

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

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

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
Płatki śniadaniowe
źródło
-1

Możesz po prostu zignorować je wszystkie, dodając .idea/*do .gitignorepliku.

DinoPi
źródło
-2

Chociaż utrzymanie właściwego .gitignorepliku jest pomocne, stwierdziłem, że to alternatywne podejście jest znacznie czystsze i łatwiejsze w użyciu.

  • Utwórz fikcyjny folder, my_projecta wewnątrz git clone my_real_projectbędzie repozytorium projektu.
  • Teraz podczas otwierania projektu w IDE (Intellij / Pycharm) otwórz folder my_projecti zaznacz my_project/my_real_projectjako root VCS.
  • Możesz my_project/.ideanie zanieczyścić swojego repozytorium git, ponieważ szczęśliwie żyje ono poza repozytorium git, co jest tym, czego chcesz. W ten sposób Twoje .gitignorepliki również pozostają czyste.

To podejście działa lepiej z następujących powodów.

1 - .gitignoreplik pozostaje czysty i nie musimy wstawiać wierszy związanych z produktami JetBrains, ten plik jest lepiej wykorzystywany do plików binarnych i bibliotek oraz zawartości autogenicznej.

2 - Intellij stale aktualizuje swoje projekty, a pliki wewnątrz .ideazmieniają każdą znaczącą wersję JB. Oznacza to, że musimy stale aktualizować nasze, .gitignoreco nie jest idealnym wykorzystaniem czasu.

3 - Intellij ma tutaj wadliwy wzór, większość redaktorów Atom, VS Code, Eclipse ... nikt nie przechowuje ich zawartości IDE bezpośrednio w katalogu głównym projektu. JB również nie powinien być wyjątkiem. Obowiązkiem Jetbrains jest śledzenie tych plików poza katalogiem głównym projektu. Muszą powstrzymać się od zanieczyszczenia korzenia VCS. Takie podejście właśnie to robi. .ideaFolder jest trzymane na zewnątrzPROJECT_ROOT

Mam nadzieję że to pomoże.

nehem
źródło
1
Ta odpowiedź jest całkowicie myląca. /.ideaw .gitignore działa dobrze; Zwykle problem zostanie rozwiązany za pomocą tego polecenia:git rm --cached -r .idea
HosseyNJF
/.ideanie działa, możesz także sprawdzić inne odpowiedzi i oficjalne wytyczne od JB
nehem
-4
  • Usuń folder .idea

    $rm -R .idea/
    
  • Dodaj regułę

    $echo ".idea/*" >> .gitignore
    
  • Zatwierdź plik .gitignore

    $git commit -am "remove .idea"
    
  • Kolejne zatwierdzenie będzie w porządku

Tai LE
źródło
7
ignorowanie folderu pomysłów jest w porządku, ponieważ nie wszyscy ich używają i nie są częścią twojego kodu - (miejmy nadzieję) nie potrzebujesz ich na przykład podczas produkcji.
Tom Andersen,
1
ignorowanie jest w porządku, ale usuwanie nie jest dobrym pomysłem. Zawiera informacje dotyczące lokalnego obszaru roboczego.
foo
Dziwię się, że zostało to odrzucone. Szwy to najlepsza odpowiedź tutaj!
Hugo Rafael Azevedo