깃헙으로 프로젝트 협업하는 기본적인 프로토콜을 정리했다.
1. 프로젝트 repository clone
git clone <repo 주소.git>
2. 가상환경 구축
# 설치된 pyenv 환경 중 원하는 파이썬 버전을 활성화.
pyenv shell <PYTHON_VERSION>
# 원하는 파이썬 원하는 가상환경을 설치.
# python3 -m venv "원하는 가상 환경 이름"
python3 -m venv .venv
# 가상 환경 활성화
source .venv/bin/activate
3. 디펜던시 설치 (pip, poetry, ...)
repo에 poetry.lock으로 디펜던시 관리하고 있다면,
pip install poetry
poetry install
4. pre-commit 활성화
pre-commit은 commit 전에 정해진 양식에 맞게 코드를 자동 수정해준다(flake8, black, isort).
pre-commit install
5. 브랜치 생성 및 작업
브랜치는 항상 main 위에서, 기능 구현 단위로 생성한다. 브랜치 이름은 해당 기능을 반영해서 짓는다.
ex) data-preprecess
git checkout -b <branch_name>
6. 브랜치에서 작업 도중에 main이 수정(merge)되었는데, 해당 수정본이 작업에 필요하다면 main으로 rebase한다.
git checkout main
git pull origin main
git checkout <branch_name>
git rebase main
이때, 해당 브랜치에서 작업중인 commit이 날라가는데, commit 단위 복원을 통해 해결할 수 있다. git reflog를 이용해 복원하려는 commit 번호를 가져온 뒤 git cherrypick <commit 번호> 하면 복원된다. 이때 main과 commit 내용이 충돌하면 해당 부분을 수정 한 뒤, 복원해야 한다.
7. 작업이 완료되면 push 후 PR을 날린다. 이후 PR이 merge 되면 해당 branch를 삭제한다.
git branch -D <branch_name>
8. git remote를 main으로 전환 후 pull
git checkout main
git pull origin main
새로운 기능을 추가하고 싶을 때, 다시 5번부터 해서 branch 생성 후 작업한다.
'Programming' 카테고리의 다른 글
[파이썬] 클래스 상속과 method override (0) | 2021.04.30 |
---|---|
[Dev] 리눅스 inode full 해결하기(WIP) (0) | 2021.04.14 |
[CS] 파이썬 multi-processing(parmap) (0) | 2021.03.22 |
[WIL] CS & Dev convention (0) | 2021.03.04 |
객체지향 프로그래밍(2) 상속과 다형성 (0) | 2021.01.03 |