본문 바로가기
Dev Note/else

intellij 에서 git 으로 인식되지 않는 브랜치 해결 ( /.idea 폴더의 역할)

by iyos 2022. 8. 8.

intellij 사용중에 특정 레포에서만 몇몇 브랜치에서 git 으로 인식되지 않는 문제가 발생했다.
원인 자체는 간단하지만, 인텔리제이 사용자라면 협업중에 비슷한 경우가 생길 수 있는 부분이라 기록한다.

현상

일반적인 경우 git, commit ,history 등 intellij 에서 제공하는 탭들이 보여야 정상인데,
아래처럼 git 이 아닌 일반 프로젝트로 나오고 있었다.

왼쪽의 경우 commit, pull reqe, git 등의 버전관리 탭이 노출되지만 오른쪽은 같은 레포지토리 임에도 노출되지 않는다.


특정 브랜치에서만 인텔리제이를 활용한 풀리퀘,커밋,깃 코드 분석과 히스토리를 전혀 볼 수가 없었지만
터미널을 통해 다른 브랜치로 체크아웃을 한 후엔 정상적으로 작동하고 있었다.

원인

원인은 인텔리제이를 사용하지 않는 다른 협업자가 불필요한 폴더를 삭제하는 과정중에 /.idea 폴더를 삭제한 뒤 push 를 한게 원인이었다.

위 문제의 원인 포인트가 git이나 설정이 아닌 ide(intellij) 라고 범위를 좁힐 수 있던 이유는

  1. 터미널에서 명령어로 git pull, git checkout 등을 실행했을때 정상적으로 동작했고
  2. 같은 레포내의 몇몇 브랜치에서만 발생했기 때문이다.


추가로 하나의 문제가 더 있었는데, idea 폴더를 삭제한 작업자가 꼼꼼하게도 gitignore에 해당 폴더를 통채로 설정해서
아무리 정상적인 파일로 넣어주어도 commit changeList 에도 노출되지 않고 있었다.

따라서 기존에 내가 먼저 해당 레포를 clone 하여 쓰고있던 회사 PC에서는 위 폴더가 남아있어 정상작동 했지만,
최신버전의 레포를 새로운 프로젝트로 다시 클론하면 발생하고 있던 것이다.
(나의 경우 재택 중인 pc에서 작업을 이어서하려던 중에 발생했다 ㅠㅠ)

idea 폴더 내 파일들 삭제이력


해결

정상적인 브랜치에서 /.idea 폴더아래의 설정값들을 백업한다음 비정상적인 브랜치로 체크아웃하여 해당 폴더를 다시 넣어주었다.
이때, workspace.xml 안에 있는 현재 브랜치 정보는 복구하고자하는 대상 브랜치로 바꿔주었다.

또한 gitignore 에서는 해당 폴더 푸시를 위해 잠깐 풀어두었지만, 위 폴더는 사용자별로 설정에 따라 변경되므로 버전관리를 할 필요는 없다고 판단했다.

사라진 폴더를 복구하기위해 풀어둔 부분은 파일 원복 후 다시 gitignore에 추가하여 불필요하게 버저닝되지 않도록했다.
(애초에 이 부분을 넣어놨더라면 다른 ide를 쓰는 사용자가 해당 폴더가 거슬려 불필요하다고 판단하고 삭제하는 일은 없었을 것 같다.)

포인트

1. ide 자체 설정에 관련된 폴더/파일은 gitignore에 넣어놓고 버전관리를 하지 않도록 하자.

2. 레포 설정과 관련한 파일에 대한 수정/삭제는 반드시 개발자들간의 협의/공유가 필요하고,
개발자들간 각각 다른 ide를 쓰고 있다면 더더욱 그렇다!!

idea 폴더에 뭐가 있는데?

위 문제를 해결하다 보니 idea 폴더 내 파일들을 하나하나 까보게되었는데, 이참에 간단하게나마 정리를 해두면 좋을 것 같다.
열어보면 필수적으로 가져와야하는게 있고, 그렇지 않은 것들이 있어서 필요에따라 gitignore 설정을 하면 된다.
(한번쯤은 직접 열어보는걸 추천한다!)

  • vcs.xml - IDE는 프로젝트당 하나의 vcs.xml을 사용한다. 또한 VCS 저장소는 vcs.xml에 매핑되어야 하기 때문에 아래와 같이 넣어준다.
  • modules.xml - 이건 프로젝트 설정에서 모듈로 지정하여 생성된 모듈파일 (.iml 파일)을 매핑해주는 부분인데, 아래 링크를 통해 프로젝트 모듈을 설정하여 만들어도 된다. 내 경우엔 이미 동일한 모듈로 설정한 다른 브랜치가 있었기때문에 해당 xml 파일을 들고왔다.
  • workspace.xml - 현재 브랜치, 로컬로 체크아웃한 브랜치들, 최근 변경된 파일, 열려있는 파일, 사용자가 지정한 각종 윈도우의 위치, 사이즈 등 사용자의 세션 정보를 가지고있다.


참고 : https://rider-support.jetbrains.com/hc/en-us/articles/207097529-What-is-the-idea-folder-

반응형