.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) 옵션을 사용하면 된다.
이미 버전관리 대상에 포함있는 파일을 제외하고 싶은 경우
※ 아래 작업을 수행하기전에 현재까지 작업한 내역을 commit 하고 진행해야하는지 고민 필요
▶ 위 명령어를 사용하면 해당 파일은 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로 상태를 보았을 때, 무시되는 것을 확인할 수 있다.
여러 파일을 한번에 처리하려면 아래와 같이 명령어를 입력할 수도 있다.
※ .gitignore에 어떤 조건을 설정해야할 지 모를 때 유용한 사이트
.gitignore 내부 설정을 자동으로 생성해 주는 사이트가 존재한다.
ex) 프로젝트에서 사용하는 언어, IDE 등을 입력하면 자동으로 .gitignore 파일을 만들어준다.
'Git' 카테고리의 다른 글
[Git] UI Application vs Terminal (0) | 2021.04.15 |
---|---|
[Git 깃] git show (0) | 2021.04.07 |
[Git] learngitbranching 답안 및 풀이 - 1 (0) | 2021.03.21 |
[Git] learngitbranching 답안 및 풀이 - 2 (0) | 2021.03.21 |
[Git] [Case] 원격 저장소 복제(git clone) (0) | 2021.03.21 |
댓글