2014-10-13 1 views
102

.gitignoreAndroidSTudio의 파일을 많이 보았고 일부 파일에 .idea이 있고 그렇지 않은 파일이 있습니다.Android 스튜디오 - .idea 디렉토리 전체를 git에서 무시해야합니까?

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

완전히 무시해서는 안되지만, .gitignore에 있어야하는 .ima와 같은 특정 파일이 있습니까 (예 : .iml)?

+0

'.idea/runConfigurations /'에있는 일부 파일을 제외하고'.idea'를 무시합니다. – Daniel

+1

superset : http : // stackoverflow.com/questions/16736856/what-should-be-in-my-gitignore-for-android 스튜디오 프로젝트 –

답변

75

이 페이지를 살펴 수행 할 수 있습니다은 "Directory 기반 형식"에서

IntelliJ doc about project configuration files

을 특정 라인은 흥미 롭다 :

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

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

는 그러나, 나는 제대로 프로젝트가 IDE에 의존하기 싫어 (I 현재 넷빈즈로 만든 프로젝트를 진행하고 있으며 우리 회사의 표준이된다 이클립스와 함께 사용하는 상처). 버전 제어에서 디렉토리를 유지 : 당신이 종속성을 관리하고 구축 할 수 메이븐 또는 Gradle을 같은 뭔가를 사용하지 않는 경우

  1. :

    따라서, 귀하의 질문에 대답합니다. 이렇게하면 모든 사람이 프로젝트와 종속성을 올바르게 구성 할 수 있습니다. 상대방에서는 모든 개발자가 설정 파일에서 환경을 정의하는 것과 동일한 방식으로 환경을 설정해야합니다.

  2. Maven 또는 Gradle과 같은 것을 사용하는 경우 :이 도구를 올바르게 구성하고 디렉토리를 버전 제어에 보관하지 마십시오. 사실, 내부 설정 파일 에 포함 된 모든 정보는 Maven/Gradle 파일에 저장된이어야합니다. 그런 다음 개발자가 환경에 따라 IDE를 구성하도록하십시오. 이 방법은 Eclipse, IntelliJ, Linux, Windows를 사용하여 더 이상 문제가되지 않습니다.
+7

다음 단락에 유의하십시오. "예외는 workspace.xml 파일이며 개인 설정을 저장합니다 ... 그래서이 파일을 동료들과 공유하고 싶지는 않을 것입니다. " – Dalbergia

-1

나는 항상이 디렉토리를 gitignore에 추가합니다. 프로젝트를 다시 빌드 할 때마다 그 안에 들어있는 모든 파일이 생성됩니다. 이 파일은 프로젝트에서 중요한 역할을하지는 않지만 나중에 어셈블리하는 동안 버그 또는 문제가 발생할 수 있습니다. 일부 "예"와 "아니오"답변 후, 그래서 내가 추가하고

26

OK "예와 아니오"대답 :

을 문제는 .idea 두 프로젝트의 빌드 구성 (종속성을 선언 없음)에 사용되는 것입니다 프로젝트 설정 (검사 등).

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

+0

구체적으로 iml 파일을 다루는 방법은 무엇입니까? – dors

+1

iml 파일을 반드시 무시해야합니다. – JBaruch

+1

나는 아직도 구성이 IDE 종속 파일에 보관되어서는 안되며 Maven/Gradle이 그렇게하는 것이 더 좋다고 생각하고 있습니다. – mithrop

3

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

"개념적으로"이 조건을 충족시키는 이유는 JetBrains의 .idea 폴더에 문제가있어 사용하지 못했기 때문입니다. 이러한 문제는 피할 수 있었거나 수정되었을 수 있지만 문제는 아니지만 올바른 방법은 우리에게 불투명했습니다. JetBrains의 잘못이라고 생각합니다. 개발자로서 우리는 솔루션을 찾는 시간이나 욕구가 없기 때문입니다. 우리의 IDE가 올바르게 작동합니다.

  • 심볼릭 링크 프로젝트 폴더 잘 작동하지 않습니다

    말했다되고 있다는 문제가 있었다되었다은 다음과 같습니다. 프로젝트를 설정할 때이를 홈 디렉토리로 심볼릭 링크합니다. 우리가 발견 한 것은 프로젝트가 콘크리트 디렉토리처럼 취급하는 것이 아니라 정확한 심볼릭 링크를 사용하도록 설정되었다는 것입니다. 즉, 다른 개발자가 프로젝트를 다른 장소에 보관하거나 단순히 심볼릭 링크를 사용하지 않는 경우 심볼릭 링크를 문자 그대로 찾고 있기 때문에 전체 디렉토리가 프로젝트 탐색기에서 누락됩니다. 더 나쁜 것은 구성에서이 경로 값을 찾을 수 없다는 것입니다. .idea 폴더를 구성하는 파일에서 정확한 설정을 찾을 수 없습니다.

  • 정의 파일은 기본적으로 사용자별로 분할됩니다. 즉, 사전에 단어를 추가하려면 jgreathouse라는 정의가 나와 있지만 다른 사용자는 자신의 정의 섹션을 갖게됩니다. 신고 된 단어는 다른 사용자에게 철자 오류로 표시됩니다. 이것은 바람직하지 않습니다. IDE를 잘못해서 정의 파일에 추가하는 이유가 있습니다. 이 정의를 다른 사용자와 직관적으로 공유하기를 바랍니다.
  • 동료가 현재 구성에있는 구성으로 구성을 덮어 쓰기 때문에 동료가 계속 구성을 덮어 씁니다. 제 말은 개발자가 IDE를 변경하는 대신 프로젝트 구성 변경이 포함 된 출처의 저장소를 병합하거나 심지어 선택 사항을 제공함으로써 개발자가 작업하고 병합하여 .idea 구성을 자동으로 덮어 씁니다. IDE의 현재 메모리 내 구성 제 생각에 이것은 .idea 구성을 공유 구성으로 사용할 수 없게 만듭니다. 이 문제를 해결하기 위해 개발자는 말 그대로 IDE 인스턴스를 종료하고 repo를 가져 와서 IDE를 다시 열어야합니다. IDE가 현재 메모리에있는 구성으로 즉시 덮어 쓰는 경우 공유 구성을 유지하는 것은 의미가 없습니다. 마치 공유 구성이 전혀없는 것과 같습니다.

Visual Studio 및 Netbeans를 사용하기 전에 VC에서 이러한 유형의 공유 IDE 구성을 수행했으며 항상 괜찮습니다. 그러나 .idea와 더불어 그것은 실망시키는 것을 사용할 수 없게된다고 느낀다. JetBrains이 더 나은 사용자 경험을 제공하기를 바랍니다.