본문 바로가기

개발자/Programming

gitignore 설정하기

반응형

.gitignore 설정

git은 변경점을 추적을 추적하는데, 특정 파일들을 무시(ignore)하여 추적하지 않게 할 수 있다.

▶ Log 파일이나 Build 설정은 관리 대상에서 제외 처리할 수 있다.

    ex) Intellij IDE에서 각 프로젝트의 ".idea" 폴더

    ex) Github 등의 공개 저장소에 개인키가 올라가면 보안 문제 발생할 수 있다.

 

설정 파일(.gitignore) 생성

.gitignore 파일을 프로젝트 최상위 루트에 생성한 후

그 안에 버전관리에 포함하지 않을 파일을 패턴에 맞게 작성해 준다. 

    - 표준 Glob 패턴을 사용한다.

    - 아무것도 없는 라인이나, "#"으로 시작하는 라인은 무시한다.

    - 슬래시(/)로 시작하면 하위 디렉토리에 적용되지(Recursivity) 않는다.

    - 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다.

    - 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다.

 

<설정 예시>

# 확장자가 .a인 파일 무시

*.a

 

# 윗 라인에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않음

!lib.a

 

# 현재 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디렉토리에 있는 파일은 무시하지 않음

/TODO

 

# build/ 디렉토리에 있는 모든 파일 무시

build/

 

# doc/notes.txt 파일은 무시하고 doc/server/arch.txt 파일은 무시하지 않음

doc/*.txt

 

# doc 디렉토리 아래 모든 .pdf 파일 무시

doc/**/*.pdf

 

시뮬레이션

".git" 폴더가 보이는 위치에 ".gitignore" 파일을 생성합니다.

그리고 ".temp"라는 임의의 폴더와 그 안에 임의의 파일 생성

▶ "harbang.cpp" 파일에 "test"라는 문구가 적혀져 있다.

 

git status를 통해 확인해보면 변경사항을 확인할 수 있다.

 

여기서 ".gitignore"에 아래와 같은 문구 추가

▶ ".temp" 폴더가 제외되도록 설정

 

다시 git status로 확인해보면 변경사항에서 제외되는 것을 확인할 수 있다.

 

ignore 목록에 있어도 추가(Add)하고 싶은 경우

-f (force) 옵션을 사용하면 된다.

git add -f {File Name}

 

 

이미 버전관리 대상에 포함있는 파일을 제외하고 싶은 경우

※ 아래 작업을 수행하기전에 현재까지 작업한 내역을 commit 하고 진행해야하는지 고민 필요

git rm -r --cached {파일명}

▶ 위 명령어를 사용하면 해당 파일은 Untracked files 상태로 돌아간다.

    무시하고자 하는 파일(또는 폴더)이 이미 버전 관리 대상에 포함되어 있는 경우, 

    즉, index에 포함이 되어 있기에 index에서 해당 파일(또는 폴더)을 제거해야 한다.

 

<옵션 설명>

rm : git 관리 대상 파일 삭제 

      (옵션 없이 사용하는 경우에는 실제 working tree 내용도 삭제된다.)

-r : "Allow recursive removal when a leading directory name is given" 의미로

    재귀 삭제를 허용하는 것으로 해석할 수 있다.

    폴더의 하위 폴더 및 파일을 전부 처리하기 위한 용도로 알아두면 된다.

--cached : Use this option to unstage and remove paths only from the index.

                  Working tree files, whether modified or not, will be left alone. 

                  index상에서만 삭제하고, 실제 working tree 데이터에는 변경 X

 

아래와 같이 추적되고 있던 "cc.cpp" 파일을 git ignore 하기 위해 rm 처리.

 

 

추적에서 제외되어 "untracked files:" 상태가 되었다.

 

 

".gitignore" 파일에 해당 파일명("cc.cpp") 추가

 

 

다시 git status로 상태를 보았을 때, 무시되는 것을 확인할 수 있다.

 

 

여러 파일을 한번에 처리하려면 아래와 같이 명령어를 입력할 수도 있다.

git rm -r --cached .

 

※ .gitignore에 어떤 조건을 설정해야할 지 모를 때 유용한 사이트

.gitignore 내부 설정을 자동으로 생성해 주는 사이트가 존재한다.

ex) 프로젝트에서 사용하는 언어, IDE 등을 입력하면 자동으로 .gitignore 파일을 만들어준다. 

반응형