Android Studio-전체 .idea 디렉토리가 git ignore에 있어야합니까?


137

AndroidStudio.gitignore파일에 대한 많은 예제를 보았습니다. 일부 파일 에는 있지만 그렇지 않은 파일도 있습니다..idea

전체 .idea 디렉토리를 .gitignore에 추가하지 않는 좋은 이유가 있습니까?

완전히 무시해서는 안되는 경우 .idea 안에 .gitignore에 있어야하는 특정 파일 (예 : .iml)이 있습니까?


.idea아래의 일부 파일을 제외하고는 무시 합니다 .idea/runConfigurations/.
Daniel

답변:


104

이 페이지를 살펴볼 수 있습니다.

프로젝트 구성 파일에 대한 IntelliJ 문서

"디렉토리 기반 형식"에서 특정 행은 흥미 롭습니다.

.idea 디렉토리에는 일련의 구성 파일 (.xml)이 포함되어 있습니다. 각 파일에는 파일 이름에 반영되는 특정 기능 영역과 관련된 구성 데이터의 일부만 포함됩니다 (예 : compiler.xml,, encodings.xml) modules.xml.

거의 모든 파일에는 구성 요소 모듈의 이름 및 위치, 컴파일러 설정 등과 같은 프로젝트 자체의 정보 핵심이 포함되어 있습니다. 따라서 이러한 파일은 버전 제어에 따라 유지 될 수 있습니다.

그러나 프로젝트 IDE에 종속적으로 만드는 것을 싫어합니다 (현재 NetBeans로 만든 프로젝트를 진행 중이며 회사의 표준이되는 Eclipse와 함께 사용하는 것이 아프습니다).

따라서 귀하의 질문에 대답하려면 :

  1. 의존성을 관리하고 빌드하기 위해 Maven 또는 Gradle과 같은 것을 사용 하지 않는 경우 : 디렉토리를 버전 제어 상태로 유지하십시오 . 이런 식으로 모든 사람이 프로젝트 및 종속성을 올바르게 구성 할 수 있습니다. 상대방은 모든 개발자가 환경 설정 파일에서 정의한 것과 동일한 방식으로 환경을 설정해야합니다.
  2. Maven 또는 Gradle과 같은 것을 사용하는 경우 : 이러한 도구를 올바르게 구성 하고 디렉토리를 버전 제어 상태로 유지하지 마십시오 . 실제로 설정 파일에 포함 된 모든 정보 는 Maven / Gradle 파일에 저장 해야 합니다. 그런 다음 개발자가 환경에 따라 IDE를 구성하도록하십시오. 이 방법으로 Eclipse, IntelliJ, Linux, Windows를 사용하면 더 이상 문제가되지 않습니다.

9
그러나 다음 단락을 참고하십시오. "파일 workspace.xml은 예외입니다. 개인 설정을 저장합니다. 따라서이 파일을 동료와 공유하고 싶지는 않습니다."
Dalbergia

40

OK, 그래서 "Yes"와 "No"답변 후 "Yes and no"답변을 추가하고 있습니다 :)

문제는 .idea프로젝트 빌드 구성 (종속성 선언)과 프로젝트 설정 (검사 등) 모두에 사용됩니다.

빌드 구성에 IDE를 사용하고 싶지는 않지만 팀간에 설정을 공유하고 싶을 수도 있습니다. 당신은 단지 무시의 일부가해야 할 이유입니다 .idea(같은 내용 libraries폴더와 modules.xml파일),하지만 버전 제어에서 다른 사람을 유지 (예를 들면 copyright, dictionariesinspectionProfiles폴더 및 파일에서 .idea같은 dynamic.xml, codeStyleSettings.xml등).


iml 파일을 어떻게 구체적으로 처리합니까?
dors

1
iml 파일은 반드시 무시해야합니다.
JBaruch

1
여전히 구성을 IDE 종속 파일에 보관해서는 안되며 Maven / Gradle이 그렇게하는 것이 좋습니다.
mithrop 2013 년

@mithrop 문제는 Maven / Gradle 파일에서 이러한 유형의 구성을 선언 할 수 없다는 것입니다. 아이디어 자체의 형식이며 Maven / Gradle에는 이식 가능한 대안이 없습니다.
JBaruch

네, 맞습니다. 어쨌든, maven / gradle 파일에 넣을 수 없다면 다음에 다른 IDE에서 프로젝트를 가져올 때 문제가 발생합니다 (처리하는 것이 싫어요). 그러나 나는 전적으로 당신에게 동의합니다 (내 대답을 읽으면 내가 실제로 있음을 알 수 있습니다) : 파일을 포함 시키거나 필요에 따라 :)
mithrop

7

VC에서 프로젝트 구성을 유지하는 개념은 유효합니다. 모든 개발자가 프로젝트에 PHPStorm을 사용했기 때문에 팀과 함께이 작업을 수행 했으므로 공통 구성을 개념적으로 유지하는 것이 합리적이었습니다. 동일한 사전 파일, 동일한 코딩 표준 규칙 및 동일한 플러그인 구성을 사용하려고했습니다.

"in concept"으로 이것을 검증하는 이유는 JetBrains의 .idea 폴더에 문제가있어서 사용하지 못하게 되었기 때문입니다. 이러한 문제는 피하거나 고칠 수있는 문제 일 수 있지만 올바르게 수행하는 방법은 불분명했으며, 개발자로서 시간이없고 해결책을 찾는 방법이 없기 때문에 JetBrains의 결함이라고 생각합니다. IDE가 올바르게 작동합니다.

그러나 문제는 다음과 같습니다.

  • 프로젝트 폴더 심볼릭 링크가 제대로 작동하지 않습니다. 프로젝트를 설정할 때 프로젝트를 홈 디렉토리로 심볼릭 링크합니다. 우리가 발견 한 것은 프로젝트가 구체적인 디렉토리처럼 취급하지 않고 정확한 심볼릭 링크를 사용하도록 설정되었다는 것입니다. 즉, 다른 개발자가 자신의 프로젝트를 다른 곳에 보관하거나 단순히 심볼릭 링크를 사용하지 않으면 전체 디렉토리가 문자 그대로 심볼릭 링크를 찾기 때문에 프로젝트 탐색기에서 누락됩니다. 더 나쁜 것은 구성 에서이 경로 값을 찾을 수 없다는 것입니다. .idea 폴더를 구성하는 파일에서 정확한 구성을 찾을 수 없습니다.
  • 정의 파일은 기본적으로 사용자에게 파티션됩니다. 이것은 사전에 단어를 추가하고 싶다면 jgreathouse에 대한 정의로 나열되지만 다른 사용자에게는 자체 정의 섹션이 있음을 의미합니다. 신고 된 단어는 여전히 다른 사용자에게 철자 오류로 표시됩니다. 이것은 바람직하지 않습니다. 정의 파일에 추가 한 이유는 IDE가 잘못 되었기 때문입니다. 이 정의가 다른 사용자와 직관적으로 공유되기를 원합니다.
  • IDE는 현재 메모리에있는 구성으로 구성을 덮어 쓰므로 동료는 구성을 계속 덮어 씁니다. 내 말은 개발자가 작업하고 저장소를 원래 위치에서 병합하여 IDE 변경 구성 대신 프로젝트 구성 변경을 포함하거나 선택을 제공한다는 것입니다. .idea 구성을 자동으로 덮어 씁니다. IDE의 현재 인 메모리 구성 내 생각에 이것은 .idea 구성을 공유 구성으로 사용할 수 없게 만듭니다. 이 문제를 해결하려면 개발자는 말 그대로 IDE의 해당 인스턴스를 종료하고 저장소를 당기고 IDE를 다시 열어야합니다. IDE가 현재 메모리에있는 구성으로 즉시 덮어 쓰는 경우 공유 구성을 유지하는 것은 의미가 없습니다. 그것'

Visual Studio 및 Netbeans를 사용하기 전에 VC에서 이러한 유형의 공유 IDE 구성을 수행했으며 항상 괜찮 았습니다. 그러나 .idea를 사용하면 단순히 사용할 수 없다고 느끼고 실망합니다. JetBrains가 그 위에 올라서 더 나은 사용자 경험을 제공하기를 바랍니다.


> IDE에서 구성을 변경하거나 선택을하는 대신, IDE의 현재 메모리 내 구성으로 .idea 구성을 자동으로 덮어 씁니다. 와우, 그것은 정말로 불행하다. 알아 둘만 한!
그렉 가격
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.