Git

[Git] .gitignore 적용하기

Da-ryu 2022. 4. 30. 07:30

 2월에 세미 프로젝트를 하면서 팀원들과 협업을 위해 Git을 처음 사용해봤다. 당시 팀원들 모두 Git에 익숙하지 않아서 pull, push할 때마다 문제가 생겼는데, 무슨 문제인지도 파악을 못해 로컬 저장소를 삭제하고 원격 저장소를 다시 clone하는 일이 다반사였다. 심지어 clone할 때도 폴더에 빨간 에러가 주르륵 뜨고, 한글이 깨져 있었다. 결국 매번 다시 하나하나 설정하며 진행했더랬다. 팀원들 각자 java build path를 다시 설정하고, 깨진 한글 파일 인코딩 형식을 다시 수정하고... 지금 다시 보니 팀원 각각의 설정 파일이 모두 적용되어 일어난 일이다. .gitignore 파일에 조금 더 신경 썼더라면 그렇게 협업이 힘들지 않았을 것이다.

네이버 영어사전

 .gitignore는 'ignore'의 뜻처럼 프로젝트의 설정 파일 등 불필요한 것들을 제외하고 commit 할 수 있도록 도와준다. 이때 유닉스 계열 환경에서 사용하는 글로브(glob) 패턴을 사용하여 설정한다. 자주 쓰는 것을 예시로 살펴보면, 

  • *.class : 확장자가 .class인 모든 파일을 무시
  • !Hello.class : 모든 .class를 무시해도 Hello.class는 절대 무시하지 않음
  • /example : .gitignore가 존재하는 폴더 내에 존재하는 example 폴더를 무시
    ('/'로 시작하면 하위 폴더에 적용하지 않음)
  • example/ : 모든 example 폴더를 무시
  • example/*.txt : example 폴더 바로 밑에 있는 확장자가 .txt인 파일 무시
    (example 폴더 하위 폴더 내의 .txt는 무시하지 않음)
  • example/**/*.txt : example 폴더 안 확장자가 .txt인 모든 파일 무시
    (example 폴더 하위 폴더 내의 .txt도 무시)

 아래 주소는 운영체제, 개발 도구, 프로그래밍 언어 등을 입력하면 .gitignore 내용을 자동으로 구성해주는 사이트다. 처음 .gitignore 설정할 때 많은 도움이 된다.

https://www.toptal.com/developers/gitignore

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

참고로 .gitignore는 프로젝트의 최고 상위 폴더에 위치한다.

 

 .gitignore를 처음부터 신경 썼다면 문제가 없지만 나처럼 이미 올라가지 말아야 할 파일까지 올린 상태라면 후에 .gitignore를 수정한다고 해도 자동으로 반영이 되지 않는다.

그래서 .gitignore 파일을 수정한 뒤, 원격 저장소의 파일을 삭제하고 다시 추가하여 반영되도록 해야 한다.

$ git rm -r --cached .
$ git add .
$ git commit -m "커밋 메시지"
$ git push <저장소명> <브랜치명>

* --cached 옵션으로 원격 저장소의 파일만 삭제(로컬 저장소의 파일은 삭제되지 않도록 함)