들어가기에 앞서
참고한 자료를 바탕으로 비전문가가 정리한 글이므로 오류가 있을 수 있습니다.
오류에 대한 의견은 언제든지 환영합니다. 댓글로 알려주시면 너무나도 감사드립니다.
.idea가 뭐지?
인텔리제이로 작업하다보면 반드시 생기는 생성 파일이 있는데 바로 .idea라는 폴더입니다.
Jetbrains 개발자는 .idea폴더가 VCS 매핑, 실행 및 디버그 설정파일, 현재 프로젝트를 사용하는 유저의 탐색 기록, 실행한 파일 목록 등의 상세 정보등을 저장하는 폴더라고 합니다.
즉, IDE옵션을 저장하는 폴더이며 각 컴퓨터 환경에 맞게 다르게 옵션이 저장된다고 보면 됩니다. 충돌이 일어나지 않을려면 어차피 .idea폴더는 자동 생성되므로 .gitignore 파일에 .idea폴더를 작성하면 문제는 해결됩니다.
모듈 : 소스코드, 리소스 등을 저장하는 content root와 환경설정이 포함되어 있는 .iml 파일
비슷하게 iml이라는 파일이 모듈마다 존재하는데, 해당 파일은 모듈의 환경 설정을 담은 파일입니다. 이 역시도 각 컴퓨터 환경에 맞게 다르게 저장되므로 .gitignore 파일에 명시해줘야 합니다.
최상단 .gitignore파일에 .idea와 iml을 작성한 모습
# JetBrains 공식 .gitignore 파일 명세
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# 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
# AWS User-specific
.idea/**/aws.xml
# 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/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# 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
# SonarLint plugin
.idea/sonarlint/
# 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
XML
복사
참고로, 이미 작업을 완료한 후에 .gitignore 파일에 작성하면 계속해서 제외한 파일이 stage상에 올라가는 현상이 발생할 수 있습니다. 그럴 때는 콘솔에 git rm --cached .idea .iml -r 명령어를 입력함으로써 캐쉬를 지워 문제 해결이 가능합니다.