Git에서 .idea 폴더 깨끗하게 빼는 방법 (git rm –cached + git check-ignore)

Git에 잘못 올라간 .idea 폴더를 깔끔하게 제거하고 .gitignore로 다시 안 올라가게 막는 방법 정리해봄. git rm –cached와 git check-ignore까지.

Git에서 .idea 폴더 깨끗하게 빼는 방법 (IntelliJ, PhpStorm 등)

IntelliJ, PhpStorm 같은 JetBrains 계열 IDE 쓰다 보면 .idea 폴더가 Git에 같이 올라가는 경우 많음.
환경 설정, 캐시 같은 것들이라 협업할 땐 오히려 문제를 만들기도 함.
여기서는 이미 Git 인덱스에 올라간 .idea를 깨끗하게 지우고,
앞으로는 아예 커밋이 안 되게 막는 방법까지 정리해봄.

.idea 폴더를 Git에서 빼야 하는 이유

  • 개인 환경 설정이라서 사람마다 내용이 다름
  • 머지 충돌 자주 남. 같은 파일을 IDE가 자동으로 계속 수정함
  • 리포지토리 용량만 쓸데없이 커짐

그래서 보통은 .idea 폴더는 .gitignore에 넣어서 버전 관리 대상에서 제외함.
이미 커밋된 상태라면 먼저 인덱스에서 지우고, 그 다음에 무시 규칙을 적용해야 깔끔해짐.

1. 인덱스에서 .idea 전체 제거하기 (working tree에는 남김)

이미 원격 저장소까지 .idea가 올라가 있는 상황이라고 가정함.
이때 로컬에서 폴더 자체를 지우는 게 아니라, Git이 추적만 안 하게 만들고 싶으면 아래처럼 하면 됨.

# 인덱스에서 .idea 전체 제거 (working tree에는 남음)
git rm --cached -r .idea

# 변경사항 커밋
git commit -m "Stop tracking .idea"

설명함:

  • git rm --cached: 파일/폴더를 Git 인덱스에서만 제거함. 실제 디스크에서는 삭제 안 됨.
  • -r: 폴더를 재귀적으로 모두 처리하겠다는 옵션.
  • 이후 git commit으로 “이제 .idea는 버전 관리 안 한다”라는 상태를 기록함.

이 커밋까지 푸시하면, 원격 저장소에서도 .idea 폴더가 사라지지만,
각자 로컬 개발 환경에서는 그대로 남아있어서 IDE는 계속 정상 동작함.

2. .gitignore에 .idea 추가해서 앞으로 커밋 막기

이제부터는 .idea 폴더가 다시는 커밋 안 되게 막아야 함.
프로젝트 루트에 있는 .gitignore 파일에 아래 한 줄 추가함.

.idea/

이미 .gitignore 파일이 있으면 맨 아래에 하나 더 추가하면 되고,
없으면 새로 만들어도 됨.

여기까지 하면:

  • 과거에 커밋된 .idea는 인덱스에서 제거됨
  • 앞으로 새로 생기는 .idea 변경은 Git이 무시함

3. git check-ignore로 무시 규칙 제대로 먹는지 확인하기

.gitignore에 추가만 하면 된 것 같지만,
실제로 규칙이 제대로 적용되는지 확인해보면 더 안심됨.
이때 쓰는 명령이 git check-ignore 임.

# 무시 규칙이 실제로 적용되는지 확인
git check-ignore -v -- .idea/copilot.data.migration.some.xml

옵션 설명:

  • -v : 어느 .gitignore 파일의 어떤 규칙에 걸렸는지까지 보여줌
  • -- : 그 뒤에 오는 건 파일 경로라는 걸 명확히 알려주는 용도

이 명령을 실행했을 때, 출력에 .idea/ 규칙이 보이고 해당 파일 경로가 같이 나온다면
.idea 아래 파일들은 제대로 무시되고 있다는 뜻임.

정리

  • .idea는 개인 환경 설정이 섞여 있어서 보통 Git에서 제외함
  • 이미 커밋된 .ideagit rm --cached -r .idea로 인덱스에서만 제거함
  • .gitignore.idea/ 추가해서 앞으로는 커밋 자체를 막음
  • git check-ignore -v -- <파일명>으로 무시 규칙이 제대로 적용됐는지 검증함

위 과정 한 번만 깔끔하게 해두면, 이후부터는 .idea로 인한 머지 충돌이나
쓸데없는 변경사항에서 꽤 해방됨. 새로운 프로젝트 시작할 때도
.gitignore 템플릿에 .idea/를 기본으로 넣어두면 편함.

Was this helpful?

0 / 0