지난 글의 예고와는 다르게 git ignore를 먼저 가지고 왔습니다. .gitignore를 확장자로 가지니는 이 친구는 이름값을 하는 친구 입니다. git이 무시할 파일과 디렉토리를 설정해주기 때문입니다.

코드를 작성하고 프로젝트를 진행하다보면 굳이 공유하지 않아도 될 파일이 만들어 지기도 하고, 뒤에 다루게 될 원격 저장소에 올라가지 않아도 되거나 올리면 안될 결과물들이 만들어지기도 합니다. 대표적으로 .idea, .vsIDE들에서 생성되지만 코드를 공유하고 백업하는데 오히려 방해가 되는 것들이 있습니다. 다른 사람이나 미래의 내가 그 코드를 다시 사용하는데 IDE 설정 등이 commit을 방해하는 경우도 생깁니다.

Git을 시작하는 단계에서는 굳이 ignore가 왜 필요할까 의문이 들 수 있습니다. 정작 저도 한달의 삽질을 거듭하고 Git을 조금 쓸 수 있을 때가 되어서야 ignore의 존재를 알았고, 필요성을 느꼈습니다. 그렇다면 어떤 경우에 사용을 할까요? 굉장히 다양한 경우에 사용할 수 있고, 취향이나 습관에 따라서 사용방법이 달라 질 수는 있지만 대표적인 사례로 설명 드리겠습니다.

코드의 결과물로 나오는 이미지, Remote Repository에 올리면 안될 데이터베이스 계정 정보와 같은 비밀 정보들, 백업파일, OS 파일, .jar같은 라이브러리 등 올리고 싶지 않거나 올려선 안될 정보 내용물들을 주로 제외합니다. 개인적으로는 프로젝트 진행에 있어 꼭 필요한 코드만 남기는 것을 좋아해서 테스트 파일 등은 항상 제외 하는 편입니다.

특정한 문법을 따르고는 있지만 문법이라고 부르기 민망할 정도로 단순한 규칙들을 따르고 있어서 한번 보시는 정도로 충분히 익히실 수 있습니다. 꼭 지켜주실 규칙은 .gitignore 파일은 .git폴더와 같은 위치에 있어야 합니다!

# 은 주석입니다.

*
#은 All을 의미합니다. file.extends 모두에 사용이 가능합니다

*.jpg
# jpg 확장자를 가진 모든 파일을 무시합니다.

!main.jpg
# jpg를 무시해도 main.jpg는 추적됩니다.


test.*
# test라는 이름의 모든 파일을 무시합니다

/
# 현재 경로를 의미합니다

/TODO
# 현재 경로의 TODO 파일을 무시합니다. TODO라고만 해도 됩니다.

build/
# build 경로 아래의 모든 파일들을 무시합니다

doc/*.pdf
# doc 경로에 존재하는 모든 pdf를 무시합니다. 단 doc/v1/test.pdf 같이 sub dir에 있는 파일은 추적됩니다.

doc/**/*.pdf
# doc 아래에 있는 모든 pdf 파일이 무시됩니다.

하지만 이렇게 gitignore파일을 만들어도 이미 add를 통해서 indexing이 돼서 Staging Area 올라간 파일과 디렉토리는 계속 관리가 되고 있습니다. 이 경우에는 gitignore 적용하기를 보시면 좀 더 구체적인 해결법을 적어 두었습니다. 난 내용은 모르겠고 그냥 적용만 하고 싶다 하시는 분은 아래 명령어를 이용하시면 됩니다.

git rm -r --cached .
git add .
git commit -m "Apply .gitignore"

문법은 봤지만 내가 진행할 프로젝트에서 난 뭘 빼야되고 둬야할지 모르겠고 누가 알려줬으면 좋겠다 하시는 분들을 위한 사이트가 존재합니다. ignore 모음에 들어가서 사용하시는 언어, IDE를 적으면 자동으로 해당 프로젝트에 꼭 필요한 내용을 만들어줍니다. JetBrains를 사용하고 계신다면 ignore 플러그인을 추천드립니다.

정말 다음 글은 오늘도 나온 commit이 뭔지로 돌아오겠습니다. Git Author이랑 메일 설정하는 법이 먼저 올지도 몰라요……….


겉핥기로 시작하는 Git 시리즈는 Git bash를 사용하는 것으로 전제로 작성 된 글입니다. 이김에 CLI에 익숙해져 보세요!!