실수로 .idea 디렉토리 파일을 git에 커밋


306

실수로 .idea/디렉토리를 git에 커밋했습니다 . 이것은 다른 곳에서 충돌을 일으켜 내 리포지토리를 확인해야합니다. 리모콘에서 이러한 파일을 어떻게 제거합니까?

Intellij IDE가 필요하기 때문에 여전히 로컬에서 이러한 파일이 필요합니다. 난 그냥 리모컨에 그들을 원하지 않습니다. 디렉토리 .idea/를 디렉토리 에 추가 .gitignore하고 커밋 하고이 파일을 원격으로 푸시했습니다. 그래도 다른 컴퓨터에서 체크 아웃하는 동안 아무런 영향을 미치지 않는 것 같습니다. 여전히 오류 메시지가 나타납니다.

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml

10
커밋을 검토하여 나중에 이것을 피할 수 있습니다. 나는 실행하는 것을 선호 commit-v당신이 커밋 작성할 때 편집기에서 DIFF를 표시합니다. 이러한 종류의 실수를 방지하고 변경 사항에 커밋 메시지를 집중시키는 데 도움이됩니다.
데니스

데니스가 옳습니다. 또한 Git은 기본적으로 커밋 된 변경 목록에 파일을 추가해야하므로이를 활용하고 모든 것을 한 번에 커밋하지는 않습니다. 그렇지 않으면 저장소를 추가하여 저장소를 오염시킵니다 .idea.
Tadeck 2016 년

1
.idea의 두 파일을 제외한 모든 파일은 소스 제어에 있어야합니다. devnet.jetbrains.com/docs/DOC-1186
cja

gits 커밋해서는 안되는 모든 파일을 관리하려는 경우 IntelliJ .ignore 플러그인이 매우 유용하다는 것을
알았습니다

안녕하세요, 원격 저장소에 .idea가 있으면 그로 인해 해로운 것은 무엇입니까?
milad salimi

답변:


676

무시 된 파일 목록에 .idea 디렉토리 추가

먼저에 추가하면 .gitignore실수로 다시 귀하 또는 다른 사람이 저지른 것이 아닙니다.

.idea

저장소에서 제거

둘째, 저장소에서만 디렉토리를 제거하되 로컬에서는 삭제하지 마십시오. 이를 위해 여기에 나열된 것을 수행하십시오.

로컬 파일 시스템에서 파일을 삭제하지 않고 Git 저장소에서 파일을 제거하십시오.

다른 사람에게 변경 사항 보내기

셋째, .gitignore파일을 커밋 .idea하고 리포지토리에서 제거 합니다. 그런 다음 리모컨으로 밉니다.

요약

전체 프로세스는 다음과 같습니다.

$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push

(선택적으로 마지막 행을로 바꿀 수 있습니다 git push some_remote. 여기서 some_remote푸시하려는 리모콘의 이름입니다)


4
참고 : fatal: pathspec '.idea' did not match any files을 실행할 때 메시지가 표시 되면 git rm -r --cached .idea.idea 폴더를 삭제하고 github에서 가져온 다음 다시 시도하십시오.
annedroiid

'파일과 일치하지 않습니다'라는 @annedroiid 오류가 발생하면 경로를 추가하고 추가 할 수 있습니다. 나는 database.yml을 파일을 삭제했을 때처럼, 나는 단순히 한 '자식 RM -r --cached 설정 / database.yml을'
Ruto 콜린스

.idea 디렉토리의 일부 파일은 리포지토리에 체크인해야합니다. .gitignore의 모양에 대한 JetBrains 제안 은 github.com/github/gitignore/blob/master/Global/… 을 참조하십시오 .
tokenizer_fsj

2
나는 내 인생 에서이 폴더를 우리의 저장소에서 가져올 수 없습니다 ... 분기를 전환하면 다시 추적합니다 ... 사람들은 여러 지점에서 이것을 실행했으며 분기를 전환 할 때마다 ... git는 그것이 필요하다고 생각합니다 .. 어느 시점에서 ... idea 폴더를 삭제하십시오. 마스터에서 실행 한 다음 모든 분기에 병합하려고 시도했지만 여전히 설정을 지우고 있습니다.
nawlbergs

1
.idea파일을 커밋하기 위해 폴더를 추가하지 않도록 IntelliJ로 설정하는 영구적 인 솔루션이 있습니까?
Serhat

88

저장소에서 제거하고 변경 사항을 커밋 할 수 있습니다.

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"

그 후에는 원격으로 푸시 할 수 있으며 그 이후의 모든 체크 아웃 / 클론은 정상입니다.


10
받아 들인 대답과는 반대로 이것은 나를 위해 일했습니다. 어쩌면 차이를 만든 것은 git add -u 일 것입니다.
Paolo Mioni

두 번째 줄은 필요하지 않습니다.
kjdion84

다른 사람들이 말했듯이, 나는 두 번째 줄을 운영하지 않았습니다. 매력처럼 일했다! 감사
blackkara

0

당신은 추가해야 .gitignore의 프로젝트에 파일을 추가합니다 /.idea그것. 각 디렉토리 / 파일을 한 줄에 추가해야합니다.

기존 .gitignore 파일 이 있으면 파일에 새 줄을 추가하고 새 줄에 넣어야 /.idea합니다.

그 후 git rm -r --cached .idea명령 을 실행하십시오 .

오류가 발생하면 git rm -r -f --cached .idea명령 을 실행할 수 있습니다 . 모든 실행 한 후 git add .다음 git commit -m "Removed .idea directory and added a .gitignore file"마지막으로 실행하여 변경 밀어 git push명령을 사용합니다.


0

마스터 브랜치를 통해이 작업을 수행하는 것이 좋습니다

.gitignore 파일을 편집하십시오. 아래 줄을 추가하십시오.

.idea

원격 저장소에서 .idea 폴더를 제거하십시오. 아래 명령을 사용하십시오.

git rm -r --cached .idea

더 많은 정보를 위해서. 참조 : 실제로 삭제하지 않고 Git 리포지토리에서 파일 제거

.gitignore 파일을 준비하십시오. 아래 명령 사용

git add .gitignore

범하다

git commit -m 'Removed .idea folder'

리모트로 푸시

git push origin master

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.