본문 바로가기

Programming

[Dev] Git 협업 프로토콜(branch - commit - PR - Merge)

깃헙으로 프로젝트 협업하는 기본적인 프로토콜을 정리했다.

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 생성 후 작업한다.