개요
GitHub에 푸시하기 전 확인해야 할 사항 및 Git 초기화 과정을 설명합니다.
.gitignore
.gitignore는 파일 이름입니다. 이 파일은 Git 커밋 예외를 지정하기 위해 사용됩니다. 특정 파일 및 디렉터리들을 이 파일에 기록하므로써 Git은 해당 파일 및 디렉터리들을 추적하지 않습니다. 프로젝트 루트 폴더에 .gitignore 파일을 생성합니다.
제외할 파일 및 디렉터리들을 한 줄 씩 입력합니다. 디렉터리는 끝에 슬래쉬(/)를 붙히며, 와일드카드(*) 또한 지원됩니다.
가상환경 폴더(venv)
Python 가상환경은 각 프로젝트마다 Python 모듈 및 라이브러리의 버전을 독립적으로 유지하기 위해 필요한 환경입니다. 또한 운영체제 마다 가상환경 폴더의 구성이 다르므로 OS 독립성을 유지하기 위해서 가상환경 폴더를 Git 소스 제어에서 제외시켜야 합니다.
venv/
하지만 단순히 가상환경 폴더를 Git에서 제외시키면 다른 개발 환경에서 소스를 다운로드 받아 작업할 때, 새로 Python 모듈 및 라이브러리를 설치해야 합니다. 이 과정을 편하게 진행하기 위해 현재 가상환경에 설치된 모듈 목록을 텍스트 파일로 추출해야 합니다. 터미널에서 아래 명령을 실행합니다.
pip freeze > requirements.txt
pip는 Python의 패키지 매니저입니다. freeze 명령은 현재 가상환경에 설치된 Python 패키지 목록을 추출합니다. > 기호는 콘솔 리다이렉션 기능인데 콘솔 화면에 그 목록을 출력하는 대신 requirements.txt 파일로 저장합니다.
settings.py
프로젝트 폴더 안에 있는 settings.py 파일을 보면 SECRET_KEY 변수가 존재합니다. 키의 값은 프로젝트가 생성될 때마다 랜덤으로 할당됩니다.
SECRET_KEY = 'v$$%pk2m=fo-!f8n5(u)p55r3s=g0(ul&#-j%o!w9f%2-$dx&='
이 키는 django 내에서 로그인과 같은 세션을 유지하고, 비밀번호 생성, 쿠키, 암호화 서명 등에 사용되는 키입니다. 이 키 값을 공격자가 탈취하면 서비스의 암호화된 로직이나 데이터에 접근할 가능성을 크게 열어줍니다. 그러므로 이 키를 소스 제어에 포함시키거나 커밋시키지 않도록 해야 합니다.
몇 가지 SECRET_KEY를 소스 제어에서 제외시키는 방법들이 존재합니다. 가장 간단한 방법은 이 settings.py 파일 자체를 소스 제어에서 제외시키고 이 파일은 따로 보관하는 것입니다.
<MY-PROJECT-DIRECTORY>/settings.py
PyCharm 설정 폴더
PyCharm의 Project 탐색기에서는 안보이지만 PyCharm 프로젝트의 설정들을 저장하는 .idea라는 폴더가 생성됩니다. 상단의 Project 모드를 Project Files 모드로 바꾸어주면 프로젝트 루트 폴더의 실제 폴더 및 파일 구조가 나타납니다. 이 폴더 또한 모두 제외시켜도 상관없으나, 프로젝트 설정들을 보존하고 싶다면 특정 파일들을 제외하고 포함시켜도 됩니다. 자세한 정보는 JetBrains 기술문서를 참조하십시오.
이 예제에서는 .idea 폴더를 모두 제외시키겠습니다.
.idea/
데이터베이스
실제 데이터가 들어있는 데이터베이스 파일은 필요없으므로 제외시켜야 합니다.
db.sqlite3
기타
각종 로그 파일 및 임시파일을 제외시킵니다.
*.log *.pot *.pyc __pycache__/
최종적인 .gitignore 파일 내용은 다음과 같습니다.
venv/ .idea/ db.sqlite3 <MY-PROJECT-DIRECTORY>/settings.py # temporary files *.log *.pot *.pyc __pycache__/
Git 초기화
PyCharm 메뉴 VCS -> Enable Version Control Integration... 을 열고 Git을 선택합니다.
프로젝트 탐색기의 파일/폴더에 색상이 적용되었습니다.
- 흰색: 변경 사항이 없는 파일
- 빨간색: Git이 추적하지 않는 파일
- 노란색: gitignore에 의해 제외된 파일/폴더
- 초록색: 새로 생성된 파일
- 파란색: 마지막 커밋 이후 변경된 파일
이제 Git에 프로젝트 파일/폴더를 모두 추가시킵니다.
커밋[Ctrl K]
푸시[Ctrl Shift K]
처음 푸시를 한다면 어디에 푸시를 할 것인지 지정해야 합니다. 푸시하고 풀하려는 원격지를 Git에서는 Remote라 합니다. VCS -> Git -> Remotes...에서 레포지토리 주소를 입력합니다.
클론
VCS -> Git -> Clone... 또는 PyCharm 첫 화면에서 클론 항목을 찾을 수 있습니다.
클론 후 처음 해야 할 일은 보안 상 제외시켰던 settings.py 파일을 프로젝트 폴더 안으로 가져오는 것입니다. 그리고 나서 이 프로젝트가 django 프로젝트라는 것을 PyCharm에게 알려야 합니다. (.idea 폴더를 제외시켰으니...)
PyCharm 환경설정[Ctrl Alt S]에서 Languages & Frameworks -> Django로 이동한 후 Settings 항목에 settings.py 파일을 지정합니다.
그리고 Python Template Languages로 이동해 Django를 선택합니다.
이제 Python 가상환경을 생성해야 합니다. PyCharm 환경설정에서 Project: <PROJECT-NAME> -> Project Interpreter로 이동한 후 톱니바퀴 버튼을 클릭 -> Add...에서 새 가상환경을 생성합니다. 이제 환경설정을 닫고 requirements.txt 파일을 열면 PyCharm이 자동으로 설치해주려고 하네요.