gitignore อะไรจากโฟลเดอร์ .idea


495

เป็นไปได้ซ้ำ:
Intellij Idea 9/10, โฟลเดอร์ใดที่เช็คอิน (หรือไม่เช็คอิน) ควบคุมแหล่งที่มา?

ฉันเริ่มใช้ WebStorm เพื่อการพัฒนาเว็บและฉันไม่แน่ใจว่าจะเพิ่มอะไรและสิ่งที่ควรแยกออกจากที่เก็บ Git ของเรา เห็นได้ชัดว่าไฟล์บางไฟล์ใน.ideaโฟลเดอร์นั้นหมายถึงการควบคุมเวอร์ชันเช่นการตั้งค่าไลบรารีภายนอก ( jsLibraryMappings.xml) แต่ไฟล์อื่น ๆ อาจมีการเปลี่ยนแปลงบ่อยครั้งและเฉพาะสำหรับนักพัฒนาซอฟต์แวร์ (เช่นworkspace.xml)

.gitignoreรูปแบบที่แนะนำสำหรับ WebStorm / IntelliJ IDEA คืออะไร

ป.ล. มีคำถามเกี่ยวกับเรื่องนี้อยู่แล้ว แต่มักจะมุ่งเน้นไปที่ว่าจะรวม.ideaโฟลเดอร์ทั้งหมดหรือไม่ให้ยกเว้นทั้งหมด ฉันคิดว่าไฟล์บางไฟล์ใน.ideaโฟลเดอร์ควรมีการควบคุมเวอร์ชันในขณะที่ไฟล์อื่นไม่ควรทำและฉันพยายามค้นหาไฟล์ใด


8
ฉันคิดว่าการใส่ไฟล์ IDE ในระบบการกำหนดเวอร์ชันเป็นความคิดที่ไม่ดี โครงการของคุณจะเชื่อมโยงกับ IDE เฉพาะมากขึ้นและคุณสามารถนำปัญหามาสู่ผู้ใช้ IDE อื่น ๆ ฉันมีโครงการไม่กี่โครงการที่มีไฟล์ IDE ใน VCS และฉันประสบปัญหาแทรกซ้อน ตอนนี้ฉันมีใน VCS เพียงไฟล์ maven และความคิดสร้างไฟล์โครงการและทุกอย่างเรียบร้อย
chalimartines

11
@chalimartines ฉันชอบที่จะมีทุกสิ่งที่จำเป็นสำหรับการสร้างในพื้นที่เก็บข้อมูล เนื่องจากเราไม่ได้ใช้ Maven และใช้ IDE เพียงตัวเดียวจึงเป็นเรื่องยุ่งยากที่จะไม่มี.ideaไฟล์ใน VCS
Borek Bernard


สำเนาที่เป็น
Logz

คำตอบ:


430

หน้าสนับสนุนอย่างเป็นทางการควรตอบคำถามของคุณ

ดังนั้นในของคุณ.gitignoreคุณอาจไม่สนใจไฟล์ที่ลงท้ายด้วย.iwsและworkspace.xmlและtasks.xmlไฟล์


6
เอกสารแนะนำให้ "แชร์ไฟล์โมดูล. iml ทั้งหมด" ดังนั้น. gitignore ที่มีสองบรรทัดต่อไปนี้ควรใช้ได้: .idea / workspace.xml .idea / task.xml
Kevin Ortman

9
ไวยากรณ์ที่ถูกต้องน่าจะเป็น*/.idea/workspace.xml */.idea/tasks.xml
vsp

111
ไวยากรณ์ที่ดีกว่าคือ**/.idea/workspace.xml **/.idea/tasks.xml
Josh Unger

37
ทำไมเป็น**/ดีกว่า*/?
Vanquish46

39
@ Vanquish46: มีความเฉพาะเจาะจงมากขึ้น ** จะเรียกใช้ซ้ำผ่านโฟลเดอร์ย่อยทั้งหมดดังนั้นไฟล์ที่ตรงตามเกณฑ์จะถูกละเว้นในโฟลเดอร์ย่อยเช่นกัน
Syndog

233

ฉันแค่ต้องการนำเสนอทางเลือกที่ใหม่กว่า มีเครื่องมือออนไลน์ที่สร้าง.gitignoreไฟล์ตามระบบปฏิบัติการ IDE และภาษาการเขียนโปรแกรมที่คุณอาจใช้

gitignore.io


ข้อสงวนสิทธิ์การแก้ไข : อย่าคัดลอกไฟล์นี้คัดลอกไฟล์ที่สร้างโดยเว็บไซต์แทนพวกเขาทำได้ดีในการปรับปรุงให้ทันสมัยอยู่เสมอ นี่เป็นเพียงตัวอย่าง

ไฟล์ที่สร้างขึ้นสำหรับIntelliJมีดังต่อไปนี้

# 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
"โดยค่าเริ่มต้นพวกเขาแนะนำให้คุณละเว้นทุกอย่างจาก.idea/" - ไม่ต้องอีกต่อไป . gitignore ที่สร้างขึ้นในปัจจุบันไม่มี.idea/รายการ
Mikolaj

1
ทำไมคุณถึงเพิกเฉย.idea/dictionariesทันที?

@Rhymoid .gitignoreผมไม่ทราบว่าทำไมโดยเฉพาะตั้งแต่ผมไม่ได้เป็นหนึ่งเสนอ ฉันแค่แสดงเครื่องมือที่ทำ ฉันเดาว่ามันเป็นไฟล์ส่วนบุคคล คุณสามารถเพิ่มเนื้อหาในพจนานุกรมของคุณที่อาจไม่ถูกต้องสำหรับผู้อื่น พิเศษเมื่อคุณล้างข้อความ LINT ฉันเชื่อว่าถ้าคุณเห็นด้วยในหมู่เพื่อนร่วมทีมของคุณคุณอาจเพิ่มลงใน repo คอมไพล์ของคุณ
GabrielOshiro

2
ฉันตั้งใจจะใช้คำว่า 'คุณ' ทั่วไป แต่ด้วยแนวที่มันจะต้องทับหลังมันก็สมเหตุสมผลที่จะมีพวกมันอยู่ใน repo แหล่งข่าวเพราะในความเป็นจริงแล้วรายการจะมีผลกับทุกคน: พจนานุกรมมีความเฉพาะเจาะจงกับเนื้อหาของโครงการ! ตัวอย่างเช่นเมื่อทำงานกับ parser สำหรับ C ทุกคนจะพบปัญหาว่าคำว่า "punctuator" ถูกทำเครื่องหมายเท็จว่าเป็นการสะกดผิด ... เว้นแต่คุณจะแชร์พจนานุกรม

@ user824425 IntelliJ บอกว่าต้องระวังเกี่ยวกับโฟลเดอร์พจนานุกรมของผู้ใช้ (เพื่อหลีกเลี่ยงความขัดแย้งหากผู้พัฒนารายอื่นมีชื่อเดียวกัน) - ดูintellij-support.jetbrains.com/hc/en-us/articles/ …
nealmcb

28

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

สร้างโดย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
ตกลง! ถ้าคุณต้องการที่จะนำเข้าไปใช้งานบางอย่างคุณสามารถไปที่ [ gitignore.io/ Same(https://www.gitignore.io ) ได้มันจะมีประโยชน์มากสำหรับคุณที่จะค้นหาสิ่งที่คุณต้องการได้อย่างง่ายดาย!
xgqfrms

1
สิ่งนี้มีประโยชน์ แต่จะดีกว่าถ้าคุณเพิ่งเชื่อมโยงกับไฟล์ - มีความแตกต่างในเวอร์ชั่นออนไลน์อยู่แล้ว
Frankie Simon

14

สองสามปีที่ผ่านมาฉันเป็นผู้สนับสนุนการใช้งานเฉพาะ.gitignoreสำหรับ IntelliJ ด้วยการกำหนดค่าที่แนะนำนี้

ไม่อีกแล้ว.

IntelliJ ได้รับการปรับปรุงค่อนข้างบ่อยรายละเอียดของไฟล์กำหนดค่าภายในเปลี่ยนแปลงบ่อยกว่าที่ฉันต้องการและ JetBrains เรือธงเก่งในการกำหนดค่าอัตโนมัติเองตามไฟล์สร้าง maven / gradle / etc

ดังนั้นข้อเสนอแนะของฉันคือปล่อยไฟล์ config editor ทั้งหมดออกจากโครงการและให้ผู้ใช้กำหนดค่าตัวแก้ไขตามความชอบ สิ่งต่าง ๆ เช่นการกำหนดสไตล์โค้ดสามารถและควรกำหนดค่าในระดับบิลด์ พูดโดยใช้Google Code StyleหรือCheckStyleโดยตรงบน Maven / Gradle / sbt / etc

สิ่งนี้ทำให้มั่นใจได้ถึงความสอดคล้องและทำให้ไฟล์ตัวแก้ไขออกจากซอร์สโค้ดซึ่งในความเห็นส่วนตัวของฉันคือที่ที่ควร


1
นั่นคือประเด็นของฉันเราไม่ควรรบกวน.gitignoreJB เพียงเพราะฉันได้อธิบายไว้ในคำตอบของฉัน
nehem

7

Jetbrains ให้. gignignore ต่อไปนี้สำหรับโปรแกรมของพวกเขา

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


-2

ในขณะที่การดูแลรักษา.gitignoreไฟล์ที่เหมาะสมมีประโยชน์ฉันพบว่าวิธีการอื่นเป็นวิธีที่สะอาดกว่าและใช้งานง่ายขึ้น

  • สร้างโฟลเดอร์จำลองmy_projectและข้างในว่าgit clone my_real_projectโครงการ repo จริง
  • ตอนนี้ในขณะที่เปิดโครงการใน IDE (Intellij / Pycharm) เปิดโฟลเดอร์my_projectและทำเครื่องหมายmy_project/my_real_projectเป็นราก VCS
  • คุณสามารถเห็นได้ว่าmy_project/.ideaจะไม่ทำให้เกิดมลพิษ repo git ของคุณเพราะมันมีความสุขอยู่นอก git repo ซึ่งเป็นสิ่งที่คุณต้องการ วิธีนี้.gitignoreไฟล์ของคุณยังคงสะอาดเช่นกัน

วิธีนี้ใช้งานได้ดีขึ้นเนื่องจากเหตุผลด้านล่าง

1 - .gitignoreไฟล์ยังคงสะอาดและเราไม่จำเป็นต้องแทรกบรรทัดที่เกี่ยวข้องกับผลิตภัณฑ์ JetBrains ไฟล์นั้นจะใช้ดีกว่าสำหรับไบนารีและไลบรารีและเนื้อหา autogen

2 - Intellij อัปเดตโครงการของพวกเขาต่อไปและไฟล์ที่อยู่ข้างใน.ideaจะเปลี่ยนแปลงทุกการเปิดตัวที่สำคัญจาก JB สิ่งนี้หมายความว่าเราต้องอัปเดตข้อมูลของเราอย่างต่อเนื่อง.gitignoreซึ่งไม่ใช่การใช้เวลาในอุดมคติ

3 - Intellij มีรูปแบบที่ไม่สมบูรณ์ที่นี่ตัวแก้ไขส่วนใหญ่ Atom, VS Code, Eclipse ... ไม่มีใครเก็บเนื้อหา IDE ไว้ในรูทโปรเจ็กต์ JB ไม่ควรเป็นข้อยกเว้นเช่นกัน มันเป็นหน้าที่ของ Jetbrains ที่จะทำให้ไฟล์เหล่านั้นถูกติดตามนอกรูทโครงการ พวกเขาต้องละเว้นจากการทำให้เกิดมลพิษราก VCS วิธีการนี้จะทำเช่นนั้น .ideaโฟลเดอร์จะถูกเก็บไว้ข้างนอกPROJECT_ROOT

หวังว่านี่จะช่วยได้


1
คำตอบนี้ทำให้เข้าใจผิดอย่างสมบูรณ์ /.ideaใน. gitignore ทำงานได้ดี; โดยปกติปัญหาจะได้รับการแก้ไขหลังจากคำสั่งนี้:git rm --cached -r .idea
HosseyNJF

/.ideaไม่ทำงานคุณสามารถตรวจสอบคำตอบอื่น ๆ และแนวทางอย่างเป็นทางการจาก JB ด้วย
nehem

-4
  • ลบโฟลเดอร์ .idea

    $rm -R .idea/
    
  • เพิ่มกฎ

    $echo ".idea/*" >> .gitignore
    
  • คอมมิตไฟล์. gitignore

    $git commit -am "remove .idea"
    
  • กระทำต่อไปจะโอเค


7
การเพิกเฉยโฟลเดอร์ความคิดนั้นดีเพราะทุกคนไม่ได้ใช้มันและพวกเขาไม่ได้เป็นส่วนหนึ่งของรหัสของคุณ - คุณ (หวังว่า) ไม่ต้องการใช้มันในการผลิต
Tom Andersen

1
การเพิกเฉยเป็นเรื่องปกติ แต่การลบออกเป็นแนวคิดที่ดีน้อยกว่า มันมีข้อมูลสำหรับพื้นที่ทำงานในท้องถิ่นของคุณ
foo

ฉันประหลาดใจที่นี่ถูกโหวต ตะเข็บเป็นคำตอบที่ดีที่สุดที่นี่!
Hugo Rafael Azevedo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.