티스토리 뷰
🚀 들어가며...
- 금일 포스팅에서는 .gitignore 파일을 통해 Git으로 프로젝트의 버전 관리를 할 경우 특정 파일이나 디렉토리를 제외시키는 방법에 대해 알아보겠습니다.
📑 내용
# .gitignore 파일
.gitignore 파일은 git에서 관리하지 않을 파일들을 지정해두는 파일 입니다.
프로젝트를 진행하다 보면 자동으로 생성되는 로그파일이나 외부 패키지, 깃에 공유되어서는 안되는 api키와 같은 내용이 작성된 .env 와 같은 파일들이 있을 수 있는데, 이러한 경우에는 .gitignore 에 원격 저장소에 commit 하고 싶지 않은 내용을 작성해두면 git에서 그 내용을 읽어 해당하는 디렉토리 또는 경로 패턴에 위치한 파일들을 버전관리에서 무시합니다.
이 때 주의할 점은 .gitignore 는 항상 .git 폴더가 위치한 루트 디렉토리에 존재해야 합니다.
# .gitignore 생성
.gitignore 파일을 생성할 때에는 .git 폴더가 있는 위치에 생성해주면 되는데, 윈도우의 경우 그냥 메모장으로 작성하여 txt파일이 아니라 모든 파일로 설정한 후에 파일명을 .gitignore 로 작성해주면 됩니다. 아니면 git bash 를 이용하여 해당 폴더로 이동한 뒤 vim .gitignore 명령으로 생성하여 작성해도 됩니다. 이후 버전관리를 하지 않을 목록을 작성하면 됩니다.
이 때, 이미 버전관리를 수행 중인 파일들을 .gitignore 에 작성하게 되면 git은 원래대로 그 파일들을 추적하게 됩니다. 이 경우에는 이미 버전 관리가 되고 있는 파일들을 수동으로 해당 파일들을 버전 관리에서 제외시켜주어야 합니다. 다음의 명령어들을 사용하여 처리합니다.
1 git rm -r --cached .
2
3 git add .
4
5 git commit -m "fixed untracked files"
- git rm -r --cached . : 현재 Repository의 cache를 모두 삭제합니다.
- git rm -r --cached <filename> : 해당하는 파일을 원격 저장소에서 삭제합니다.
- git rm <filename> : 원격 저장소와 로컬 저장소에 있는 파일을 삭제합니다.
- git rm --cached <filename> : 원격 저장소에 있는 파일을 삭제합니다. 로컬 저장소에 있는 파일은 삭제하지 않습니다.
- -r 옵션 : 하위 디렉토리를 포함하여 모든 내용을 삭제합니다.
- 이후 git add . 을 통해 .gitignore에 넣은 파일 목록들을 제외하고 다른 모든 파일을 다시 track하도록 설정합니다.
- 위 작업 이후에는 반드시 커밋을 해줍니다. git commit -m "fixed untracked files"
# .gitignore 문법
패턴 | 설명 |
* | / 를 제외한 모든 문자열과 매칭 (문자열 길이 0이상) |
** | / 를 포함한 모든 문자열과 매칭 (문자열 길이 0이상) |
? | / 를 제외한 하나의 문자와 매칭 (빈 문자 x) |
[abc] | [] 안에 있는 모든 각각의 문자들과 매칭 (a또는 b또는 c 중에 하나) |
{a, b, c} | {} 안에 있는 , 로 구분된 각각의 문자열들과 매칭 |
[^abc] | [] 안에 있는 모든 각각의 문자들을 제외한 문자들과 매칭 |
[a-z] | [] 안에서 - 사이에 있는 첫 문자와 마지막 문자 범위에 있는 모든 문자들에 대해 매칭 (a-z, A-Z, 0-9 등..) |
/ | / 부터 시작하는 경로 패턴은 하위 디렉토리에 반복적으로 적용되지 않습니다. |
! | ! 로 시작하는 패턴은 .gitignore에서 제외되며, 무시되지 않습니다. |
# | # 으로 시작하면 주석처리 |
.gitignore 파일은 Glob 패턴에 따라 작성 됩니다. Glob 패턴은 와일드 카드 문자를 사용하여 일정한 패턴을 가진 파일 이름을 지정하기 위한 패턴입니다. 정규표현식과 유사한 문법들이 많습니다.
작성 예시
1 # 확장자가 .js 인 파일은 무시
2 *.js
3
4 # .js 파일들은 모두 무시되지만, test.js만은 무시하지 않음
5 !test.js
6
7 # 현재 디렉토리에 있는 /test.js파일은 무시되지만,
8 # subDir/test.js 같이 특정 디렉토리 하위에 있는 test.js는 무시되지 않음
9 /test.js
10
11 # node_modules/ 디렉토리에 있는 모든 파일을 무시
12 node_modules/
13
14 # src/ 하위의 .js파일만 무시
15 src/*.js
16
17 # src/ 하위에 존재하는 모든 디렉토리의 .txt 파일을 무시
18 src/**/*.txt
19
20 # 현재 디렉토리와 그 하위 디렉토리 내에 존재하는 모든 .js 파일을 무시
21 /**/*.js
22
23 # 현재 디렉토리 내에 존재하는 모든 .js .ts 파일 무시
24 /*.{js, ts}
25
26 # 현재 디렉토리 내에 있는 ex1.js ex2.js ex3.js 파일 무시
27 /ex[1-3].js
- 참고로 개발 환경이나 언어를 입력하면 자동으로 해당하는 .gitignore 파일을 생성해주는 사이트가 있습니다.
🙋🏻♂️ 후기
.gitignore는 개인 프로젝트나 사내에서 프로젝트를 진행할 때 거의 필수적으로 사용하는 파일이기 때문에 익혀두시는 것을 추천드립니다!
🔗 참고한 글
https://victorydntmd.tistory.com/80
https://dololak.tistory.com/306
https://velog.io/@conatuseus/.gitignore-사용하기-imk4708751
https://velog.io/@k7120792/Glob-패턴과-정규표현식
https://git-scm.com/docs/gitignore](https://git-scm.com/docs/gitignore
https://mygumi.tistory.com/103
https://gmlwjd9405.github.io/2017/10/06/make-gitignore-file.html
'IT지식' 카테고리의 다른 글
[Linux] su / su - / sudo 명령어의 차이점에 대해 알아보자! (2) | 2022.10.15 |
---|---|
[Docker] pypi서버에 접근이 안될 경우 처리방법 (도커 컨테이너) (0) | 2022.09.27 |
Gateway란? 이해하기 쉽게 정리해보자! (1) | 2022.08.02 |
웹 브라우저에 URL을 입력하면 어떤 일이 생기나요? (13) | 2022.07.18 |
[IT지식] 아직도 구글링만 하시나요?? 개발자용 검색엔진 추천!! (1) | 2022.07.15 |
- Total
- Today
- Yesterday
- Default export
- django ORM
- Master & Slave
- MVT
- static files
- lv2
- lv1
- programmers
- Algorithm
- This
- ORM
- uSWGI
- SQL
- data formatting
- PostgreSQL
- react
- Linux
- JS
- union-find
- list
- JavaScript
- 탐욕법
- docker
- Greedy Algorithm
- Named export
- generator expression
- Python
- db
- django
- container
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |