깃을 이용하여 브랜치를 관리하고 협업하는 방법은 매우 다양하다. 정답이 정해져 있지 않으며 팀원끼리 합의 하에 적절한 방법을 찾아 협업하면 된다. 우리 팀 역시 이러한 과정을 거쳤고, 처음 우리가 선택한 방법은 가장 기본적인 git merge 방법이었다.
git merge 방법
깃헙 저장소 하나에 각자의 branch를 만들어서 로컬 branch의 commit 을 자신의 원격 branch에 push 하고 깃헙의 main (master) branch에 pull request를 보내는 방식으로 협업했다. 새로운 작업을 시작하기 전에는 main (master) branch의 내용을 fetch 및 pull 한 후에 작업하고 pull request를 보냈을 때 confilct가 발생하면 해결 후 merge 했다. 직관적이고 기본적인 방법이지만 이 방법은 history가 깔끔하지 못하고 어지럽다는 단점을 가진다. 또 공유하고 있는 branch의 내용이 변경되었을 떄 그 변화에 민감하게 반응하지 못한다는 단점이 있다.
우리의 프로젝트에 적용시켜 단점을 다시 정리해보자면, 3명 중 한 명이 추가로 기능을 구현하고 난 후에 본인의 원격 branch에 push 하고 main (master)에 pull request를 보내 merge하게 되면 이 코드는 테스트를 거치지 않고 main branch에 들어가게 되어 이후에 해당 코드에 문제가 생겨 배포를 미루어야 하는 경우 그 부분만 commit을 되돌려야 하는 번거로움이 발생했다. 또 세 명 모두 main branch에 무조건 pull request를 보낼 수 밖에 없는 구조였기 때문에 완성본 혹은 최종본을 저장하는 branch가 존재하지 않았다.
약 1년간 git merge 방법을 이용해 협업을 진행하면서 이러한 단점을 발견하게 되었고 우리는 많은 개발자들이 깃헙과 깃을 이용해 협업하는 방법이 무엇일까에 대해 고민하게 되었다. 그러던 도중 우리는 git-flow라는 방법에 대해 알게 되었고 rebase를 통한 branch 관리를 공부했다. 그리고 지난 달에 새로운 방식을 도입하여 일년 만에 새로운 협업 방식을 통해 협업을 계속하고 있다. 다음 게시물에서 이야기가 이어진다.
'Git' 카테고리의 다른 글
6. Git 의 내부동작과 구조 (0) | 2023.08.16 |
---|---|
5. Git을 이용한 협업 (2), Git-Flow 도입 (1) | 2022.09.01 |
3. 로컬 저장소와 원격 저장소 & 명령어 (2) (0) | 2022.08.13 |
2. 로컬 저장소와 원격 저장소 & 명령어 (1) (0) | 2022.08.09 |
1. 깃의 소개 (0) | 2022.08.07 |