.gitignore 파일을 통한 무시목록 설정하기

.gitignore 파일이란?

Git 시스템을 사용하여 여러명이서 팀 작업을 진행하다보면 팀 내에서 공유되지 않기를 원하는 파일들이 생길 때가 있습니다. 예를 든다면 이클립스를 기반으로 하여 진행하는 프로젝트에는 “.classpath”와 “.project”라는 파일이 생성되는데 이 파일들은 현재 내가 사용하는 PC를 기반으로 하여 각종 참조 경로들을 담고 있는 파일이기 때문에 이 파일들까지 Git을 통해서 공유된다면 모든 팀원들이 로컬 PC상의 경로를 동일하게 설정해 놓고 프로젝트를 진행하지 않는 이상 Git에서 소스코드를 Pull 받을 때 마다 이클립스의 설정을 통해서 classpath 경로값들을 수정해야 하는 경우가 발생하게 됩니다.

또 다른 경우는 소스코드 안에 연동 대상 시스템의 계정 정보가 명시되는 경우 입니다. 구글과 연동하여 메일 발송 기능을 구현한 경우 소스코드에 아이디와 비밀번호를 모두 입력한다면 모든 소스코드가 오픈되는 github 사이트에서는 내 구글 계정 정보를 모든 사람들이 볼 수 있게 됩니다. 이 경우 Github의 계정을 유료로 전환하여 프로젝트를 비공개로 진행하거나 계정정보가 포함된 소스파일은 Git에 Push되지 않도록 설정하고 해당 소스의 샘플파일을 별도로 올려 두는 방법이 있습니다.

이와 같은 처리가 가능하려면 Git에 소스코드를 Push할 때 특정 파일이 제외되도록 하는 설정이 가능해야 합니다. “.gitignore” 파일은 Git에 소스를 올릴 때 특정 파일이름 패턴이 업로드 되지 않도록 설정하는 파일입니다.  

 

Github에서 프로젝트 생성시 .gitignore 파일 기본값 생성하기

Github 사이트에서 프로젝트를 생성할 때 “Add .gitignore” 버튼을 클릭하면 사용하는 언어나 플랫폼 종류에 따라서 적절한 제외목록 파일을 자동으로 생성해 줍니다. 물론 여기에서 생성하는 파일은 나중에 필요에 따라서 얼마든지 수정할 수 있습니다.

자동으로 생성되는 제외 규칙은 기본적으로 각 PC마다 개별적으로 갖추어야 하는 설정 정보를 저장하는 파일과 *.jar나 npm등에서 내려받은 오픈소스 라이브러리 목록입니다.

오픈소스 라이브러리는 누구든지 쉽게 내려받을 수 있기 때문에 굳이 git에 등록할 필요가 없다는 취지이기도 하지만 다른곳에서 개발한 오픈소스를 내가 Git을 통해서 재배포하는 것은 기본적으로 라이센스 정책에 위배되기 때문입니다. (비공개 프로젝트라면 상관 없습니다.)

 

예를 들어서 아래와 같이 Java를 선택하면 Eclipse를 사용하면서 제외되어야 하는 파일들에 대한 규칙이 자동으로 생성됩니다.

 

아래 화면은 node.js를 사용하는 경우에 대한 선택 화면입니다.

 

Pull 받은 프로젝트에서 .gitignore 파일 확인해보기

Git에서 Pull 받은 프로젝트의 폴더를 확인해 보면 다음과 같이 .gitignore 파일을 확인할 수 있습니다. 만약 이 파일이 없다면 직접 이 이름으로 파일을 생성하면 됩니다.

주의사항: 윈도우에서는 점으로 시작하는 파일을 폴더에서 생성할 수 없습니다. 서브라임과 같은 텍스트 편집기의 저장기능을 사용하여 빈 파일을 저장해야 합니다. 주의사항2: 맥의 경우 점으로 시작하는 파일은 숨김파일로 인식되어 폴더창에서 표시되지 않습니다. 이클립스나 서브라임과 같은 소스 편집기로 해당 프로젝트 안의 파일을 확인해야 합니다.

 

 

 

아래의 스크린샷은 node.js용으로 생성된 파일을 확인해 본 것 입니다.

  • 1라인처럼 “#”이 명시된 구문은 주석입니다.
  • 2라인과 같이 독립적인 단어가 명시된 경우 해당 단어와 완벽하게 일치하는 폴더나 파일을 제외합니다.
  • 3라인은 확장자를 “.log”로 갖는 모든 파일을 의미합니다.
  • 4~6라인은 주어진 문장으로 시작하고, 뒤에는 어떤 내용이 와도 상관 없다는 의미 입니다. 이 규칙을 충족하는 모든 파일이나 폴더들이 Push되지 않습니다.

 

만약 .gitignore 파일을 생성/수정 하였다면 .gitignore 파일만 먼저 add > commit > push 과정을 거쳐서 github에 등록해야 합니다. 

 

 

일반적으로 사용되는 제외 목록 설정 내용들

실행파일 제외하기

다음의 구문들은 컴파일된 결과물들을 제외하기 위해서 사용합니다. 소스코드를 내려받아서 각 개발자들이 직접 컴파일 하면 되기 때문에 컴파일 결과물들은 git에 등록하지 않도록 구성합니다.

 

문서 형식 파일 제외하기

다음의 구문들은 많이 사용되는 문서 파일들 형식을 등록하지 않도록 처리합니다.

 

패키지 파일 제외하기

다음의 구문들은 압축파일 형식을 제외합니다. 일반적으로 오픈소스 라이브러리들이 압축 형식으로 제공되기 때문에 해당 파일들을 제외하고자 할 때 사용합니다. 이 중에서 필요한 git에 등록되기를 원하는 파일이 있다면 해당 형식을 제외한 .gitignore 파일을 사용하면 됩니다.

jar 파일이 git을 통해서 함께 배포되기를 원할 경우 아래에서 맨 마지막 라인을 적용하지 않은 상태로 .gitignore 파일을 git 서버에 push 하면 됩니다.

 

로그 파일, 업로드 폴더 제외하기

다음의 구문은 확장자가 “.log”인 파일과 “upload”라는 이름의 폴더, “logs”라는 이름의 플더를 제외합니다. 일반적으로 개발하는 기간동안의 로그 파일은 각 개발자마다 내용도 다르고 디버깅을 위한 경우를 제외하고는 테스트 과정에서 생성되는 의미 없는 내용들이므로 git에 등록하지 않습니다. 업로드 파일들도 테스트로 등록되는 파일들이 대부분이므로 git에 업로드 하지 않도록 폴더를 통째로 제외합니다. 만약 다른 폴더도 제외하고자 할 경우 폴더 이름을 입력하여 추가할 수 있습니다.

 

맥, 윈도우용 시스템 파일 제외하기

다음의 목록은 운영체제별로 폴더의 정보를 관리하기 위해서 생성하는 시스템 파일들을 제외합니다.

 

이클립스용 설정 파일 제외하기

이클립스를 사용하면서 생성되는 설정 및 임시 폴더,파일들 제외하기 다음의 목록은 이클립스를 사용하면서 각 개발자 PC마다 개별적인 정보를 저장하는 파일들 입니다. 이 파일들이 포함되어 있으면 Eclipse를 사용한 프로젝트 진행시 다른 사람의 설정 정보가 내 Eclipse에 덮어 씌워지는 불편함이 발생됩니다.

댓글 남기기