[프리코스 2주차] gitignore 분석하기
1주차에 대한 피드백 중 한가지는 'Git으로 관리할 자원을 고려하라'였다.
예를 들면 자바의 .class 파일은 git으로 관리할 필요가 없다.
자바 코드만 있으면 .class 파일을 생성할 수 있기 때문이다.
나는 평소 개발할 때 어떤 파일을 git으로 관리할지는 .gitignore로 관리했었다.
주로 민감한 파일이 github에 올라가지 않게끔 자동으로 생성된 .gitinore파일에 추가하는 방식이었다.
그러나 자동으로 생성된 .gitignore에 대해서는 궁금증을 가지고 알아본 적이 없었다.
1주차 피드백이기도 하고, 알아두면 나중에 관련한 문제가 생겼을 때 도움이 될 거 같아 알아보았다.
우선 기존의 .gitignore파일이다
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**
!**/src/test/**
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
나머지는 필요할 때 찾아봐도 될 것 같아 이중 몇가지만 알아보았다
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**
!**/src/test/**
!가 붙었다는 것은 안올리지 않겠다, 즉 git으로 관리하겠다는 말이다.
gradle-wrapper.jar는 프로젝트를 빌드하는데 핵심 파일이다.
src의 main과 test에는 내가 작성하는 자바 코드들이 들어있다.
이 세가지는 기본적으로 git에서 관리하는게 당연하다고 생각된다.
build\와 out\에는 자바 코드를 빌드하여 생성된 클래스 파일 같은 것들이 담긴다.
차이점으로는 build\는 빌드 도구에 의해 생성되고, out\은 intellij 같은 IDE에 의해 생성된다는 것이다.
그러나 src에 작성한 자바 코드만 있으면 클래스 파일이나 jar파일 같은 것들을 생성할 수 있기 때문에
git으로 관리할 필요는 없다.
여기서 하나 의문이 들었다.
그래도 자바 코드로부터 클래스 파일을 생성하거나 jar 파일을 빌드하는 것에도 어떤 비용이 들텐데
이왕 생성하고 빌드한 거 git에서 관리하면 안되나?
네 별로입니다.
이유는 크게 두 가지가 있었다.
1. 빌드된 파일들은 용량이 크고 자주 변경되기 때문에 git 저장소의 용량이 불필요하게 커진다.
2. 같은 소스코드라도 환경에 따라 빌드된 파일이 다를 수 있다.
.idea의 파일들도 마찬가지로 IDE에서 자동으로 생성하는 파일이며,
개발 환경에 종속적이기 때문에 git에서 관리할 필요가 없다.
이처럼 .gitignore 파일을 사용하면 git으로 관리할 자원을 손쉽게 설정할 수 있다.
다음은 .gitingnore를 만드는 데에 유용한 사이트이다.