Apa yang harus gitignore dari folder .idea?

496

Kemungkinan Gandakan:
Intellij Idea 9/10, folder apa yang harus diperiksa (atau tidak dicek) kontrol sumber?

Saya mulai menggunakan WebStorm untuk pengembangan web dan tidak yakin apa yang harus ditambahkan dan apa yang harus dikecualikan dari repositori Git kami. Jelas beberapa file di dalam .ideafolder dimaksudkan untuk dikontrol versi seperti pengaturan perpustakaan eksternal ( jsLibraryMappings.xml) tetapi yang lain mungkin akan sangat sering berubah dan bersifat khusus untuk pengembang (misalnya, workspace.xml).

Apa .gitignorepola yang disarankan untuk WebStorm / IntelliJ IDEA?

PS Sudah ada pertanyaan tentang ini tetapi biasanya hanya fokus pada apakah akan memasukkan keseluruhan .idea folder atau apakah akan sepenuhnya mengecualikannya. Saya pikir beberapa file di dalam .ideafolder harus dikontrol versi sementara yang lain tidak dan saya mencoba mencari tahu yang mana.

Borek Bernard
sumber
8
Saya pikir, menempatkan file IDE ke sistem versi adalah ide yang buruk. Proyek Anda akan lebih terikat pada IDE tertentu dan Anda dapat membawa masalah bagi pengguna IDE lain. Saya punya beberapa proyek dengan file IDE di VCS dan saya menghadapi komplikasi. Sekarang saya miliki di VCS hanya file maven dan IDEA menghasilkan file proyek dan semuanya baik-baik saja.
chalimartines
11
@ calimartines Saya lebih suka memiliki semua yang diperlukan untuk membangun di repositori. Karena kita tidak menggunakan Maven dan juga menggunakan IDE tunggal, itu akan menjadi komplikasi TIDAK untuk memiliki .ideafile di VCS.
Borek Bernard

Jawaban:

432

Halaman dukungan resmi harus menjawab pertanyaan Anda.

Jadi di Anda, .gitignoreAnda mungkin mengabaikan file yang diakhiri dengan .iws, workspace.xmldan tasks.xmlfile.

hifkanotiks
sumber
6
Doc merekomendasikan "berbagi semua file modul .iml", jadi .gitignore dengan dua baris berikut ini boleh saja: .idea / workspace.xml .idea / task.xml
Kevin Ortman
9
Sintaks yang benar tampaknya*/.idea/workspace.xml */.idea/tasks.xml
vsp
111
Sintaks yang lebih baik adalah**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger
37
mengapa **/lebih baik dari itu */?
Vanquish46
39
@ Vanquish46: Lebih khusus, ** berulang melalui semua sub-folder, sehingga file yang memenuhi kriteria diabaikan dalam sub-folder juga.
Syndog
234

Saya hanya ingin menyajikan alternatif yang lebih baru. Ada alat online yang menghasilkan .gitignorefile berdasarkan sistem operasi, IDE, dan bahasa pemrograman yang mungkin Anda gunakan.

gitignore.io


Penafian EDIT : Jangan menyalin file ini, salin file yang dihasilkan oleh situs web sebagai gantinya, mereka melakukan pekerjaan yang baik untuk tetap diperbarui. Ini hanya sebuah contoh.

File yang dihasilkan untuk IntelliJberisi yang berikut ini

# 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
sumber
1
"Secara default mereka menyarankan Anda mengabaikan semuanya dari .idea/" - tidak lagi. .Gitignore yang dihasilkan saat ini tidak memiliki .idea/entri.
Mikolaj
1
Mengapa Anda mengabaikan begitu saja .idea/dictionaries?
@ Rhoidoid Saya tidak tahu mengapa secara khusus karena saya bukan orang yang mengusulkan .gitignore. Saya hanya menunjukkan alat yang melakukannya. Dugaan saya adalah file pribadi. Anda dapat menambahkan hal-hal dalam kamus Anda yang mungkin tidak berlaku untuk orang lain. Khususnya ketika Anda membersihkan pesan LINT. Saya percaya bahwa jika Anda setuju di antara rekan satu tim Anda, Anda dapat menambahkannya ke repo git Anda.
GabrielOshiro
2
Saya bermaksud menggunakan generik 'Anda', maaf. Tetapi dengan paralelnya ia harus menyatu, sangat masuk akal untuk memilikinya dalam sumber repo, karena entri pada kenyataannya akan berlaku untuk semua orang: kamus khusus untuk isi proyek! Misalnya, ketika mengerjakan parser untuk C, semua orang akan mengalami masalah bahwa kata "punctuator" secara salah ditandai sebagai salah eja ... kecuali Anda berbagi kamus.
@ user824425 IntelliJ mengatakan untuk berhati-hati tentang folder kamus pengguna (untuk menghindari konflik jika pengembang lain memiliki nama yang sama) - lihat intellij-support.jetbrains.com/hc/en-us/articles/…
nealmcb
28

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

Dibuat oleh 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
sumber
2
BAIK! jika Anda ingin menyimpan sesuatu, Anda dapat pergi ke [ gitignore.io/[(https://www.gitignore.io ), akan sangat membantu Anda untuk dengan mudah menemukan apa yang Anda inginkan!
xgqfrms
1
Ini membantu tetapi akan lebih baik jika Anda hanya menautkan ke file - sudah ada perbedaan dalam versi online.
Frankie Simon
14

Selama beberapa tahun saya adalah pendukung penggunaan spesifik .gitignoreuntuk IntelliJ dengan konfigurasi yang disarankan ini .

Tidak lagi.

IntelliJ diperbarui cukup sering, spesifikasi file konfigurasi internal berubah lebih sering daripada yang saya inginkan dan unggulan JetBrains unggul dalam konfigurasi otomatis itu sendiri berdasarkan file build maven / gradle / etc.

Jadi saran saya adalah meninggalkan semua file konfigurasi editor dari proyek dan meminta pengguna mengkonfigurasi editor sesuai keinginan mereka. Hal-hal seperti penataan kode dapat dan harus dikonfigurasi pada level build; katakanlah menggunakan Google Code Style atau CheckStyle langsung di Maven / Gradle / sbt / etc.

Ini memastikan konsistensi dan meninggalkan file editor dari kode sumber yang, menurut pendapat pribadi saya, memang seharusnya begitu.

Frankie
sumber
1
Itulah tepatnya yang saya maksudkan, Kita tidak perlu repot-repot .gitignorehanya untuk JB seperti yang saya jelaskan dalam jawaban saya.
nehem
7

Jetbrains menyediakan .gitignore berikut untuk program mereka

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
Sereal
sumber
-1

Anda bisa mengabaikan semuanya dengan menambahkan .idea/*ke .gitignorefile.

DinoPi
sumber
-2

Sambil mempertahankan .gitignorefile yang tepat sangat membantu, saya menemukan pendekatan alternatif ini lebih bersih dan lebih mudah digunakan.

  • Buat folder dummy my_projectdan di dalamnyagit clone my_real_project repo proyek yang sebenarnya.
  • Sekarang sambil membuka proyek di IDE (Intellij / Pycharm) buka folder my_projectdan tandaimy_project/my_real_project sebagai root VCS.
  • Anda dapat melihat my_project/.ideatidak akan mencemari git repo Anda karena ia dengan senang hati tinggal di luar git repo yang Anda inginkan. Dengan cara ini.gitignore file tetap bersih juga.

Pendekatan ini bekerja lebih baik karena alasan di bawah ini.

1 - .gitignore file tetap bersih dan kami tidak harus menyisipkan baris yang terkait dengan produk JetBrains, file itu lebih baik digunakan untuk binari dan pustaka dan konten autogen.

2 - Intellij terus memperbarui proyek mereka dan file di dalamnya .ideaterus mengubah setiap rilis signifikan dari JB. Ini artinya kita harus terus memperbarui.gitignore sesuai yang bukan penggunaan waktu yang ideal.

3 - Intellij memiliki pola cacat di sini, kebanyakan editor Atom, VS Code, Eclipse ... tidak ada yang menyimpan konten IDE mereka tepat di dalam root proyek. JB juga seharusnya tidak menjadi pengecualian. Ini adalah tanggung jawab Jetbrains untuk menyimpan file-file itu dilacak di luar root proyek. Mereka harus menahan diri dari mencemari root VCS. Pendekatan ini tidak hanya itu. Itu.idea folder disimpan di luarPROJECT_ROOT

Semoga ini membantu.

nehem
sumber
1
Jawaban ini sepenuhnya menyesatkan. /.ideadi .gitignore berfungsi dengan baik; Biasanya masalah akan diselesaikan setelah dengan perintah ini:git rm --cached -r .idea
HosseyNJF
/.ideatidak berfungsi, Anda dapat memeriksa jawaban lain dan pedoman resmi dari JB juga
nehem
-4
  • Hapus folder .idea

    $rm -R .idea/
    
  • Tambahkan aturan

    $echo ".idea/*" >> .gitignore
    
  • Komit file .gitignore

    $git commit -am "remove .idea"
    
  • Komit berikutnya akan baik-baik saja

Tai LE
sumber
7
mengabaikan folder ide baik-baik saja karena tidak semua orang menggunakannya, dan mereka bukan bagian dari kode Anda - Anda (semoga) tidak membutuhkannya di produksi, misalnya.
Tom Andersen
1
mengabaikan itu baik-baik saja, tetapi menghapus itu bukan ide yang baik. Ini berisi informasi untuk ruang kerja lokal Anda.
foo
Saya terkejut ini tidak terpilih. Tampaknya menjadi jawaban terbaik di sini!
Hugo Rafael Azevedo