Git을 사용하여 개발, 배포등의 프로세스를 사용할 경우 동기화, 즉 서버에 반영하지 말하야 할 파일이나 폴더가 존재합니다. 예를들면 방문자에 의해 바뀌는 파일 업로드나 아니면 개발자 각각의 설정 파일 등이 그런 것들입니다.

그렇다면 이런 파일을 서버와 동기화하지 않고 추가하지 않는 방법은 어떻게할까요? 이때 .gitignore를 사용하면 되는데요 아래에서 알아봅니다.


! 잠깐 ~ 왜 .gitignore가 필요할까요

git은 개발 및 운영에 필요한 파일 및 폴더를 동기화하여 관리하는데 사용합니다. 만약 개발 과정에는 필요하지만 서버에 반드시 필요한 경우가 아니라면 꼭 git에 추가할 필요는 없을 것입니다. 또 다른 이유로 /node_modules 처럼 용량이 매우 크면서 npm install로 간단히 설치 할 수 있다면 .gitignore를 사용해 제외 할 필요가 있습니다. 아니면 백업이나 임시 파일 등도 여기에 해당합니다.



# Git 사용시 파일 및 폴더 무시, 동기화하지 않는 방법
git 레포지토리와 동기화하지 않을 내용을 설정해야하는데요 방법은 .gitignore 파일을 만들고 이 파일을 로컬 레포지토리에 위치시키면 됩니다. 만약 파일이 없는 경우에는? 새로 파일을 생성합니다.


@ .gitignore 파일 생성 후 패턴 입력
먼저 git이 설정된 곳으로 이동 후 .gitignore 파일을 생성합니다. 그 후에는 파일 안에 무시 할 경로나 파일에 대하여 설정해야 합니다. 이 때 설정 방법은 패턴을 만들어 일치하는 경우 ignore를 적용하게 됩니다. 그럼 패턴 문법을 알아봅니다.


! .gitignore 패턴 적용하는 방법
gitignore를 설정하기 위해서는 특수문자 및 기호를 사용하는 패턴 방식을 적용합니다. 아래에서 하나씩 알아봅니다.

@ **/test
** 두 개를 표시하면 어디 경로에 있던지 해당 패턴을 적용하게 됩니다. 이 말은 하위 폴더에도 동일한 패턴이 적용되는 것을 의미합니다. 위와 같이 사용되면 test라는 디렉토리는 root 또는 어디 위치에 있던 동기화되지 않도록 적용하게 되죠.
**/test

/test

위의 **/test를 적용했다면 하위 및 모든 경로에 test라는 디렉토리를 찾아 git에서 제외합니다. 하지만 아래의 /test는 해당 경로에서만 제외하는 차이점을 가지게 되죠.


@ *.jpg
이번에는 * 기호 하나를 사용했는데요 모든 파일 이름에 해당하게됩니다. 이처럼 jpg 확장자를 가진 모든 다른 이름의 파일이 ignore 패턴에 일치하게됩니다.
*.jpg

**.jpg

아래의 **를 사용한 방법은  하위에 존재하는 모든 jpg 확장자를 제외하게 될 것입니다.

@ /test.jpg
최상위 루트(root) 위치를 기준으로 설정하는 경우입니다. 이 경우 최상위에 위치한 test.jpg만 무시하게 됩니다.
/test.jpg
/nope/


@ /test/*
특정 폴더 하위의 모든 파일을 설정하는 방법으로 아래와 같이 적용할 수 있습니다.
/nope/*


이 외의 패턴들은 계속해서 업데이트 하도록 하겠습니다.