[Git] .gitignore 작성하기

dondonee·2024년 3월 31일
0
post-thumbnail

.gitignore 작성하기

git add . 명령어를 사용하면 불필요한 파일까지 스테이징되고, 그렇다고 하나씩 추가하기에는 너무 번거롭다. 이럴 때 .gitignore파일을 통해 제외할 대상을 지정하면 git add . 명령어를 사용하면서도 필요한 파일들만 추적할 수 있다.



작성법

.gitignore 파일의 위치는 프로젝트의 최상위 디렉토리이다. .git 디렉토리의 위치와 같다.


스프링 부트 이니셜라이저를 통해 프로젝트를 생성했다면 .gitignore가 포함되어 있다. (파일명 앞의 .은 숨김을 의미한다. MacOS에서는 cmd + shift + .을 통해 숨김 파일 및 디렉토리 보기를 on/off 할 수 있다.)

HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

여기에 있는 몇 가지만 예를 들어 보면 :

  • .gradle : ".gradle"이라는 이름을 가지는 파일, 디렉토리와 그 하위의 모든 파일과 디렉토리를 가리킨다.
  • build/ : "build"라는 이름을 가지는 디렉토리와 그 하위의 모든 파일과 디렉토리를 가리킨다. 이름 뒤에 /를 붙으면 디렉토리를 뜻한다.
  • !gradle/wrapper/gradle-wrapper.jar : gradle/wrapper/ 디렉토리에 있는 radle-wrapper.jar는 대상에서 제외한다. ! 표시가 앞에 붙으면 예외 케이스를 지정하는 것이다.
  • *.iws : "iws" 확장자를 가진 모든 파일을 가리킨다.
  • /nbbuild/ : 이름 앞에 /가 붙으면 루트 디렉토리에 위치한 대상만 가리킨다. 즉 이 경우는 루트 디렉토리에 있는 "nbbuild" 디렉토리를 기리킨다.

더 많은 설명은 🔗 [W3School] Git Ignore and .gitignore 참고


gitignore.io

그런데 기본으로 생성된 .gitignore를 살펴보니, 나는 MacOS를 사용하기 때문에 .DS_Store라는 불필요한 시스템 파일이 자동으로 생성되는데 이 파일은 여기에 포함되어있지 않았다.

또한 내가 놓칠 수 있는 항목이 있을 수 있기 때문에 검색을 하다가 🔗 gitignore.io 라는 사이트를 발견했다. 여기에서 운영체제, 개발언어, IDE를 선택하면 자동으로 .gitignore 파일을 작성해준다.


### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
...

MacOS, Java, IntelliJ를 선택하고 생성한 파일을 보면 위와 같이 MacOS 환경에서 생성되는 파일들도 포함하고 있다. (그 외에 많은 항목들도 있는데 잘 모르겠지만 사이트를 믿기로 했다. 잘못 포함되는 것이 문제지 포함이 안된 건 나중에 추가하면 되니까~😉)


중복 항목 제거

.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
...

이 사이트에서 생성해준 파일을 보면 위와 같이 .idea/ 디렉토리의 많은 파일들을 대상으로 지정하고 있는데(위 예시는 일부), 이미 스프링 부트의 파일에서는 .idea를 통채로 지정하고 있기에 나는 사이트가 만들어준 파일에서 모든 .idea 및 그 하위의 것들은 삭제했다.


### Java ###
# Compiled class file
*.class

자바의 바이트코드 파일도 제외하고 있는데 이미 스트링 부트가 컴파일 디렉토리인 out/을 지정하고 있기에 이 항목도 중복이라 생각해 삭제했다.


필요 항목 추가

나는 application.yml에서 DB 연결 정보 등 민감한 정보를 담기 위해 application-sensitive.yml을 분리했다. 이 파일은 퍼블릭 리포지토리에 업로드돼서는 안 되기 때문에 제외할 것이다.

spring:
  datasource:
    url: jdbc:h2:tcp://...
    username: sa
    password: sa
  • 참고) 기본 설정 파일인 application.yml에서는 spring.profiles.active: sensitive 설정을 추가해 분리된 설정 파일을 연결해야 한다. (스프링 부트는 "application-" 뒤의 이름을 별칭으로 자동 인식한다.)

application-sensitive.yml
application-sensitive.properties

.gitignore에 위 항목을 추가해준다. 나는 YAML 파일을 사용하지만 만일을 위해 application-sensitive.properties도 추가했다.



테스트

이제 git add .을 한 뒤 git status 명령을 통해 원하는 파일만 잘 스테이징 되었는지 확인한다.


$ git reset HEAD <file>

만약 잘못 올라간 파일이 있다면 위 명령을 통해 스테이징을 해제하고 .gitignore 파일을 수정한다. (이전 포스팅 참고 : 🔗 마지막 커밋 이후 변경사항 폐기하기)

0개의 댓글