오늘 글에 정리할 내용
- django 프로젝트를 git으로 버전관리가 가능하도록 세팅하기
혼자 작은 프로젝트를 진행할 때는 Github을 통해 프로젝트를 관리할 필요가 없을 수 있다.
또한 django가 어떻게 동작하는지 확인하는 용도로 사용할 때 굳이 git 버전관리를 할 필요 또한 없을 수 있다.
하지만 나는! 또한 기초를 다져가는 우리는~? 미리미리 적응하고 익숙해질 필요가 있다.
현재 django로 대단한 기능을 구현하진 않지만 그래도 미리 django 프로젝트에 git을 설정하고 관리할 수 있도록 초기 세팅하는 과정을 정리해보려 한다.
🤷 git과 github이 무엇인지 각 명령어가 무엇을 의미하는지는 [git] git, github #1을 확인해주세요.
git init
git add .
git commit -m "장고 프로젝트 구축"
git log
소스를 공유하기 위해 깃을 사용하지만 올리고 싶은것 올리고 싶지 않은것, 올려서는 안되는 것들이 존재한다. 이를 구분하기 위해 깃이 설치된 디렉토리에 .gitignore
파일을 생성해서 관리해야 한다.
(.gitignore에 특정 내용을 정의하면 github에 push할 때 정의한 내용에 해당되는 파일이나 소스들은 push되지 않는다.)
위의 사이트에서 사용하는 환경에 해당하는 키워드를 선택하면, 자동으로 .gitignore 파일에 정의할 요소들을 생성 해준다.
사이트에서 아래 키워드를 입력하여 정의할 요소를 생성하자
python, pycharm, vscode, vim, macOS, Linux, zsh
사용자의 환경에 따라 입력할 키워드는 다를 수 있다.
django 프로젝트를 생성하면 자동으로 settings.py 라는 파일이 생성된다.
settings.py에는 SECRET_KEY와 DATABASE라는 변수와 그 안에 값들이 있는데 github에 공유되어서는 안되는 내용들이다.(보안과 관련되어 있음)
따라서 이런 내용들은 별도의 환경변수로 관리해야하나, 여기서는 별도의 파일로 분리하여 관리하는 방법을 소개하겠다.
touch my_setting.py
SECRET = "setting.py에서 가져온 SECRET_KEY의 값"
# 꼭 변수명이 SECRET일 필요는 없으나, SECRET_KEY에 대한 내용이니 통일성을 유지하자
DATABASE = "settings.py에서 가져온 DATABASE의 값"
# 마찬가지로 변수명이 database일 필요는 없으나 통일성 유지!
from my_settings import SECRET, DATABASE
# settings.py에서 my_settings.py의 변수를 사용하기위해 임포트 한다.
SECRET_KEY = SECRET # SECRET_KEY의 값을 SECRET 변수로 대체
DATABASE = DATABASE # DATABASE의 값을 DATABASE 변수로 대체
위와 같이 파일을 수정해주면 github에 settings.py가 올라가도 보안관련된 값이 변수로 대체되어 확인할 수 없게된다.
그렇다면 마지막으로 my_setting.py 파일을 github에 업로드 되지 않도록 .gitignore에 선언해주자.
여기까지 진행했다면 github에 내 프로젝트를 push해도 보안과 관련된 내용을 남들이 볼 수 없도록 잘 설정했다고 할 수 있다.
git branch -M main
git remote add origin repository 주소
# github repositpry 주소를 origin이라는 변수에 담아 내 로컬에 추가한다.
git push origin main
#여기서 main은 branch 이름
여기까지 완료했다면 django 프로젝트를 github에 push하기 위한 초기세팅과 그 초기세팅을 실제로 push까지 해본 것이다.
자 추가로 프로젝트를 진행할 때 새로운 코드를 작성해서 시험해보고 싶을 때가 있을 것이다.
테스트를 해보고 원하는대로 구현이 될 경우 사용하고 아니면 사용하고 싶지 않을 때 어떤 기능을 사용하면 좋을까???
바로 git의 brunch 기능이다.
쉽게 요약하자면 우리가 앞서 main으로 설정한 브런치는 그대로 두고 새롭게 test 용도로 brunch를 만든 후 그 곳에서 코드를 구현해보는 것이다.
자세한 설명과 설정방법은 다음 글에서 계속~~ 하도록 하겠다.