Điều gì để gitignore từ thư mục .idea?


496

Có thể trùng lặp:
Intellij Idea 9/10, những thư mục nào cần kiểm tra (hoặc không đăng nhập) kiểm soát nguồn?

Tôi bắt đầu sử dụng WebStorm để phát triển web và không chắc chắn nên thêm gì và loại trừ khỏi kho Git của chúng tôi. Rõ ràng một số tệp trong .ideathư mục có nghĩa là được kiểm soát phiên bản như cài đặt thư viện bên ngoài ( jsLibraryMappings.xml) nhưng những tệp khác có thể sẽ thay đổi rất thường xuyên và dành riêng cho nhà phát triển (ví dụ workspace.xml:).

.gitignoreMẫu được đề xuất cho WebStorm / IntelliJ IDEA là gì?

PS Đã có câu hỏi về vấn đề này nhưng thường chỉ tập trung vào việc có bao gồm toàn bộ .ideathư mục hay không hoặc có nên loại trừ hoàn toàn không. Tôi nghĩ rằng một số tệp trong .ideathư mục nên được kiểm soát phiên bản trong khi những tệp khác thì không và tôi đang cố gắng tìm ra tệp nào.


8
Tôi nghĩ rằng, việc đưa các tệp IDE vào hệ thống phiên bản là ý tưởng tồi. Dự án của bạn sẽ gắn chặt hơn với IDE cụ thể và bạn có thể mang đến các vấn đề cho người dùng các IDE khác. Tôi đã có một vài dự án với các tệp IDE trong VCS và tôi đã gặp phải các vấn đề phức tạp. Bây giờ tôi có trong VCS chỉ cần các tệp maven và IDEA tạo các tệp dự án và mọi thứ đều ổn.
chalimartines

11
@chalimartines Tôi thích có mọi thứ cần thiết để xây dựng trong kho lưu trữ. Vì chúng tôi không sử dụng Maven và cũng sử dụng một IDE duy nhất, nên sẽ không có .ideacác tệp trong VCS.
Borek Bernard


Câu trả lời:


431

Trang hỗ trợ chính thức sẽ trả lời câu hỏi của bạn.

Vì vậy, trong .gitignorebạn có thể bỏ qua các tệp kết thúc bằng .iws, và workspace.xmltasks.xmlcác tệp.


6
Tài liệu khuyến nghị "chia sẻ tất cả các tệp mô-đun .iml", do đó, một .gitignore với hai dòng sau sẽ ổn: .idea / workspace.xml .idea / task.xml
Kevin Ortman

9
Cú pháp đúng dường như là*/.idea/workspace.xml */.idea/tasks.xml
vsp

111
Một cú pháp tốt hơn là**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger

37
Tại sao **/tốt hơn */?
Vanquish46

39
@ Vanquish46: Cụ thể hơn, ** đệ quy qua tất cả các thư mục con, do đó, các tệp đáp ứng tiêu chí cũng bị bỏ qua trong các thư mục con.
Syndog

234

Tôi chỉ muốn trình bày một sự thay thế gần đây hơn. Có một công cụ trực tuyến tạo .gitignorecác tệp dựa trên hệ điều hành, IDE và ngôn ngữ lập trình mà bạn có thể đang sử dụng.

gitignore.io


EDIT Khước từ trách nhiệm: Không sao chép tệp này, thay vào đó sao chép tệp do trang web tạo ra, họ làm tốt việc giữ cho nó được cập nhật. Đây chỉ là một ví dụ.

Các tập tin được tạo ra để IntelliJchứa sau đây

# 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

1
"Theo mặc định, họ đề nghị bạn bỏ qua mọi thứ từ .idea/" - không còn nữa. Hiện tại .gitignore không có .idea/mục.
Mikolaj

1
Tại sao bạn lại bỏ qua .idea/dictionarieshoàn toàn?

@Rhymoid Tôi không biết tại sao cụ thể vì tôi không phải là người đề xuất .gitignore. Tôi chỉ hiển thị các công cụ làm điều đó. Tôi đoán đó là một tập tin cá nhân. Bạn có thể thêm những thứ trong từ điển của bạn có thể không hợp lệ cho những người khác. Đặc biệt khi bạn đang dọn dẹp tin nhắn LINT. Tôi tin rằng nếu bạn đồng ý giữa các đồng đội của mình, bạn có thể thêm nó vào repo git của mình.
GabrielOshiro

2
Tôi dự định sử dụng chung 'bạn', xin lỗi. Nhưng với sự tương đồng, nó phải linting, hoàn toàn có ý nghĩa khi đưa chúng vào một repo nguồn, bởi vì các mục thực tế sẽ áp dụng cho tất cả mọi người: từ điển là cụ thể cho nội dung của dự án! Chẳng hạn, khi làm việc với trình phân tích cú pháp cho C, mọi người sẽ gặp phải vấn đề là từ "dấu chấm câu" bị đánh dấu sai là sai chính tả ... trừ khi bạn chia sẻ từ điển.

@ user824425 IntelliJ nói hãy cẩn thận với thư mục từ điển của người dùng (để tránh xung đột nếu nhà phát triển khác có cùng tên) - xem intellij-support.jetbrains.com/hc/en-us/articles/ tựa
nealmcb

28

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

Được tạo bởi 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 

2
ĐỒNG Ý! nếu bạn muốn ăn một thứ gì đó, bạn có thể truy cập [ gitignore.io/THER(https://www.gitignore.io ), có thể rất hữu ích cho bạn để dễ dàng tìm thấy những gì bạn muốn!
xgqfrms

1
Điều này hữu ích nhưng sẽ tốt hơn nếu bạn chỉ liên kết với tệp - đã có sự khác biệt trong phiên bản trực tuyến.
Frankie Simon

14

Trong một vài năm, tôi là người ủng hộ việc sử dụng một cụ thể .gitignorecho IntelliJ với cấu hình được đề xuất này .

Không còn nữa.

IntelliJ được cập nhật khá thường xuyên, thông số kỹ thuật của tệp cấu hình nội bộ thay đổi thường xuyên hơn tôi muốn và flagship JetBrains vượt trội khi tự động cấu hình dựa trên các tệp xây dựng maven / gradle / etc.

Vì vậy, đề xuất của tôi sẽ là để tất cả các tệp cấu hình trình soạn thảo ra khỏi dự án và để người dùng cấu hình trình chỉnh sửa theo ý thích của họ. Những thứ như kiểu mã có thể và nên được cấu hình ở mức xây dựng; nói sử dụng Google Code Style hoặc CheckStyle trực tiếp trên Maven / Gradle / sbt / etc.

Điều này đảm bảo tính nhất quán và để các tệp biên tập ra khỏi mã nguồn, theo ý kiến ​​cá nhân của tôi, là nơi chúng nên có.


1
Đó chính xác là quan điểm của tôi, Chúng ta không nên gặp rắc rối .gitignorevới JB như tôi đã giải thích trong câu trả lời của mình.
nehem

7

Jetbrains cung cấp .gitignore sau đây cho các chương trình của họ

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

-1

Bạn có thể chỉ cần bỏ qua tất cả chúng bằng cách thêm .idea/*vào .gitignoretập tin.


-2

Mặc dù việc duy trì .gitignoretập tin thích hợp là hữu ích, tôi thấy cách tiếp cận thay thế này là cách sạch hơn và dễ sử dụng hơn.

  • Tạo thư mục giả my_projectvà bên trong đógit clone my_real_project là repo dự án thực tế.
  • Bây giờ trong khi mở dự án trong IDE (Intellij / Pycharm), hãy mở thư mục my_projectvà đánh dấumy_project/my_real_project là gốc VCS.
  • Bạn có thể thấy my_project/.ideasẽ không làm ô nhiễm git repo của bạn bởi vì nó hạnh phúc sống bên ngoài repo git đó là những gì bạn muốn. Bằng cách này, .gitignoretập tin của bạn cũng sạch sẽ.

Cách tiếp cận này hoạt động tốt hơn vì những lý do dưới đây.

1 - .gitignore tệp vẫn sạch và chúng tôi không phải chèn các dòng liên quan đến sản phẩm JetBrains, tệp đó được sử dụng tốt hơn cho các tệp nhị phân và thư viện và nội dung tự động.

2 - Intellij tiếp tục cập nhật các dự án của họ và các tệp bên trong .ideatiếp tục thay đổi mọi bản phát hành quan trọng từ JB. Điều này có nghĩa là chúng ta phải tiếp tục cập nhật.gitignore theo đó không phải là cách sử dụng thời gian lý tưởng.

3 - Intellij có mẫu hoàn hảo ở đây, hầu hết các trình soạn thảo Atom, Mã VS, Eclipse ... không ai lưu trữ nội dung IDE của họ ngay bên trong gốc dự án. JB cũng không nên là một ngoại lệ. Đó là trách nhiệm của Jetbrains để giữ các tệp đó được theo dõi bên ngoài gốc dự án. Họ phải kiềm chế để gây ô nhiễm gốc VCS. Cách tiếp cận này chỉ có thế. Các .ideathư mục được giữ bên ngoàiPROJECT_ROOT

Hi vọng điêu nay co ich.


1
Câu trả lời này là hoàn toàn sai lệch. /.ideatrong .gitignore hoạt động tốt; Thông thường, vấn đề sẽ được giải quyết sau lệnh này:git rm --cached -r .idea
HosseyNJF

/.ideakhông hoạt động, bạn có thể kiểm tra các câu trả lời khác và các hướng dẫn chính thức từ JB nữa
nehem

-4
  • Xóa thư mục .idea

    $rm -R .idea/
    
  • Thêm quy tắc

    $echo ".idea/*" >> .gitignore
    
  • Cam kết tập tin .gitignore

    $git commit -am "remove .idea"
    
  • Cam kết tiếp theo sẽ ổn


7
bỏ qua thư mục ý tưởng là tốt vì không phải ai cũng sử dụng chúng và chúng không phải là một phần của mã của bạn - ví dụ, bạn (không hy vọng) không cần chúng trong sản xuất.
Tom Andersen

1
bỏ qua là tốt, nhưng loại bỏ là một ý tưởng tốt. Nó chứa thông tin cho không gian làm việc địa phương của bạn.
foo

Tôi ngạc nhiên khi điều này được bình chọn xuống. Seams là câu trả lời tốt nhất ở đây!
Hugo Rafael Azevedo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.