Git .gitignore 사용법 ( .idea/를 gitignore 해, 말아?)

.gitigrnore는 git의 관리 대상으로 넣지 않을 파일들이 리스팅되어있는 파일이다.

간혹 .gitigrnore에 관리 대상으로 넣지 않을 파일들을 리스팅 했지만

실제 커밋하다보면 반영되지 않는 경우가 있다.


.gitignore는 새로 추가되어서 아직 track되지 않는 파일들만 무시하기 때문이다.

a파일을 생성하고(자의적으로든 Pycharm 프로젝트가 자동으로 생성했든)

.gitignore에 리스팅하지 않은 채 이미 remote 저장소에 커밋했다면,

커밋 후에 a파일을 .girigrnore 파일에 리스팅해도

이미 a파일은 track되고 있다.


이런 경우에는 다음과 같은 조치를 취해야한다.

1 git rm --cached -r .idea/     -> 리포지토리로부터 .idea를 삭제한다.

2 echo '.idea' >> .gitignore    -> gitignore 파일을 갱신한다.

3 .git add .gitignore             ->  gitignore 파일을 add하고 커밋.

4 git 커밋 후 push

.idea파일 또는 폴더를 삭제할 수 없다고 뜰 때는,
마지막 argument에 실제 경로를 기입해야한다.


.idea/의 상위폴더가 utils라면 utils/.idea로 되어 있을 때에는 후자로 기입해야한다.


스택 오버플로글을 찾아보면

1에서 git rm -r --cached . 를 사용하라라는 답변이 있는데

댓글로 캐시된 파일 전부를 지우는건 과하다 라는 의견이 있다.

대댓글로, '큰 프로젝트를 관리할 때는 파일 하나하나 다 리스팅 하기 번거롭다'

라는 의견이 있고

rm -r --cached 이후에 gitignore갱신 뒤 add . 을 하지 않으면 remoted
브랜치와 차이가 생기기 때문에 문제가 발생할 요지가 있다.


참고로 git rm -h로 알 수 있는 rm -r의 정체는

recursive removal인데, 폴더 안의 파일들을 순회하면서
전부 없어질때까지 제거해준다.


"fatal: pathspec '.idea' did not match any files" 가 뜨게 되면,

디렉토리가 untracked 상태일 때 뜨는 경고 문구인데,

git clean -f -d .idea 으로

Git에서 추적하지 않는 파일들(Untracked files)을 삭제해준다.



그리고 여기 python project의 .gitignore에 대한 훌륭한 boilerplate가 있다.

https://github.com/github/gitignore/blob/main/Python.gitignore

그런데 Boilerplate에서는
.idea/폴더 전체를 gitignore하는 것은 바람직하지 않다고 한다.


Ignoring the whole .idea folder is not necessarily the best idea.


답변을 보면 반응이 각자 다르다.

- A. 다른 개발자들이 .idea/를 쓸 거란 보장이 없으니 넣지 말아야한다.
  
소스 컨트롤에서는 반드시 빌드랑 관련있는 파일들만 취급해야함

댓글로 이 의견에 반대하는 사람이 있다.

"난 반대. 같은 빌드 환경에서 돌리기 위해 반드시 build configuration도 취급해야한다."


대댓글로

"build configuration" 은 프로젝트 빌드 할 때 IDE를 쓰면 안됨!


"프로젝트를 빌드하기 위해선 빌드 파일이 필요하고
 
IDEA를 사용하는 모든 개발자는 동일한 프로젝트 파일을 사용해야 하기 때문에 넣어야한다.

다른 IDE쓰는 개발자들도 마찬가지다"


jetbrains.com/idea/webhelp/project.html.

Jet brain도 그렇게 권장하는 중.





출처

https://stackoverflow.com/questions/32384473/gitignore-not-ignoring-idea-path

https://stackoverflow.com/questions/1139762/ignore-files-that-have-already-been-committed-to-a-git-repository?noredirect=1&lq=1

https://stackoverflow.com/questions/24516814/should-i-ignore-the-idea-folder-when-using-pycharm-with-git


댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )