특정 파일은 git 에서 버전 관리 대상에서 제외해야 할 경우가 있습니다.


일례로 maven 이나 bundle, composer 같은 패키지 관리자를 사용할 경우 다운받은 외부 패키지는 버전 관리 대상에서 제외해야 합니다.

또 프로젝트에서 배포등의 외부에 ssh 로 연결한다면 개인키가 프로젝트 폴더내에 있을 수 있으며 이런 중요한 설정 정보는 git 저장소에 추가하지 않는게 보안과 유지 보수상 필요합니다.

(특히 github 등의 공개 저장소에 실수로 개인키가 올라가면 해킹후 코인 채굴등 심각한 피해를 당할 수 있습니다.)


git 은 이런 문제를 방지하기 위해 무시 목록(ignore list)을 .gitignore 에 작성하면 해당 파일은 git add 명령시 자동으로 제외됩니다.


.gitignore 의 각 라인마다 무시할 파일이나 디렉터리의 패턴을 적어주면 되며 여러 파일을 지정할 경우 * 를 사용해 주면 됩니다.

예로 java 프로젝트일 경우 DB 연결 정보를 담고 있는 jdbc.properties 라는 파일과 .class.jar 확장자를 가진 파일을 무시할 경우 다음과 같이 적어줍니다.

jdbc.properties
*.class
*.jar
CODE


이제 git add 명령 실행시 위 조건에 맞는 파일들은 자동으로 제외됩니다.

이미 추가되어 버전 관리중인 파일에는 영향을 미치지 않으며 새로 add 할 경우에만 적용됩니다.


만약 ignore 목록에 있어도 추가해야 할 경우 -f(force) 옵션을 사용해서 추가하면 됩니다.

git add -f jdbc.properties
CODE


.gitignore 에 설정한 정보는 하위 폴더에도 적용됩니다. 만약 특정 하위 폴더는 다른 ignore 정책을 적용해야 할 경우 해당 폴더에 .gitignore 를 만들면 상위 정책과 다르게 적용할 수 있습니다.

예로  jdbc.properties 라는 파일을 무시하지만 config 폴더에 있는 jdbc.properties  파일은 버전 관리를 해야 할 경우 다음과 같이 config 폴더에 .gitignore 파일을 만들고 설정하면 됩니다.

*
!jdbc.properties
CODE


위의 의미는 config 의 모든 파일을 무시하지만 예외 케이스로 jdbc.properties 는 버전 관리하겠다는 의미이며 ! 는 이전 패턴을 무효화하는 특별한 의미의 문자열입니다.

만약 파일 명에 ! 가 들어갈 경우 escape 문자인 \ 를 ! 앞에 붙여주면 됩니다.

gitignore.io 사용하기

사용하는 언어나 프레임워크 IDE 마다 추가해야할 패턴들이 있으며 이를 일일이 기억하는 것은 매우 귀찮은 일입니다.

이런 귀찮은 일을 대신해 주는 gitignore.io 라는 서비스가 있으니 일반적인 무시 패턴은 이 서비스를 통해서 생성하고 여기에 프로젝트의 고유한 특성에 맞는 무시 목록을 추가하면 됩니다.


같이 보기

참고