겉핥기로 시작하는 Git -git ignore편-
지난 글의 예고와는 다르게 git ignore
를 먼저 가지고 왔습니다. .gitignore
를 확장자로 가지니는 이 친구는 이름값을 하는 친구 입니다. git
이 무시할 파일과 디렉토리를 설정해주기 때문입니다.
코드를 작성하고 프로젝트를 진행하다보면 굳이 공유하지 않아도 될 파일이 만들어 지기도 하고, 뒤에 다루게 될 원격 저장소에 올라가지 않아도 되거나 올리면 안될 결과물들이 만들어지기도 합니다. 대표적으로 .idea
, .vs
등 IDE
들에서 생성되지만 코드를 공유하고 백업하는데 오히려 방해가 되는 것들이 있습니다. 다른 사람이나 미래의 내가 그 코드를 다시 사용하는데 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
에 익숙해져 보세요!!