1.7. 준비 4. .gitignore 세팅

내 컴퓨터에서 작업한 것들을 협업 또는 백업을 위해 원격 저장소에 업로드해야 하는 경우가 항상 발생합니다. 이 경우 사용하는 것이 git 이라는 도구입니다. 본 책자는 git에 대한 튜토리얼이 아니므로 git에 대한 세부적인 설명은 생략합니다. git에 대해 좀 더 공부하고자 하는 여러분은 git 튜토리얼이 블로그, 유튜브 강의, 전문서적 구매 등을 통하여 학습할 것을 추천합니다.

.gitignoregit을 이용하여 내 컴퓨터에서 작업한 소스코드를 원격 저장소(repository)로 업로드 할 때 불필요한 파일까지 업로드 되는 것을 방지하기 위해 작성하는 텍스트 파일입니다. 예를 들면 VS Code 설정파일(.vscode)은 내 컴퓨터에서는 필요하지만, 원격저장소에 올릴 필요는 없습니다. Jupyter Notebook에 필요한 .ipynb_checkpoint 폴더, 백업 파일(.bak), 데이터베이스 파일(.db), 개인 정보나 비밀번호 등이 담긴 파일(*.secret) 등은 원격 저장소에 올리면 안됩니다.

작업 디렉토리에 .gitignore라는 빈 파일 하나를 만들고 그 안에 내가 원격저장소로 업로드 할때 자동으로 딸려 올라가지 않도록 할 파일들을 쭉 적어주면 됩니다. .gitignore 파일 작성법은 참고 블로그를 방문해서 관련 내용을 참고하기 바랍니다.

1.7.1. 유용한 사이트 gitignore.io

자주 사용하는 운영체제, 개발환경(IDE), 프로그래밍 언어에 대한 .gitignore 내용을 자동을 작성해 주는 유용한 사이트가 있습니다. 해당 사이트는 gitignore.io 입니다. gitignore.io에서 python, flask, linux, windows, macOS, VisualStudioCode와 관련된 gitignore 내용을 생성해 보겠습니다.

gitignore.io screen

Fig. 1.13 gitignore.io를 이용해서 .gitignore 내용을 자동으로 생성하기

gitignore.io에서 생성 아이콘을 클릭하면 아래와 같이 자동으로 원격 저장소 업로드 시 제외할 파일/디렉토리 목록을 생성해 줍니다.

Note

gitignore.io에서 모든 것을 해결해 주지는 않습니다. 자주 사용하는 것들만 모아서 생성해 주기 때문에 개인적으로 제외할 파일을 별도로 지정해 주어야 합니다.

# Created by https://www.toptal.com/developers/gitignore/api/python,flask,linux,windows,macos,visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=python,flask,linux,windows,macos,visualstudiocode

### Flask ###
instance/*
!instance/.gitignore
.webassets-cache
.env

### Flask.Python Stack ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
:
:

VS Code에서 .gitingnore 파일을 만들고 위에서 생성한 목록을 복사하여 붙여넣기 합니다. 다음 그림을 참고하세요.

vscode .gitingnore file create

Fig. 1.14 VS Code에서 .gitignore 파일 만들기

1.7.2. .gitignore 추가 설정

flask를 사용하려면 데이터베이스가 필요합니다. 나중에 sqlite라는 데이터베이스를 사용할 예정입니다. .gitignore 파일의 맨 마지막에 아래 내용을 추가로 복사하여 붙여넣기 한 다음 파일을 저장합니다.

# sqlite
*.db

파일 이름에서 . 과 * 의미

파일이름에서 파일 이름이 없고 점(.) 다음에 확장자 이름 형태로 되어 있는 것은 대부분 설정(configuration) 파일(또는 디렉토리)을 의미합니다.

  • .gitignore \(\to\) gitignore 설정파일

  • .bash \(\to\) bash 설정파일

  • .vscode \(\to\) VS Code 설정 파일

파일 이름에 와일드 문자 *가 있다면 모든(all)을 의미합니다.

  • *.txt \(\to\) .txt를 확장자로 갖는 모든 파일

  • .gitignore 파일 안에 *.txt가 기록되어 있다면, .txt를 확장자로 갖는 모든 파일을 원격 저장소 업로드 시 제외하겠다는 의미입니다.