본문 바로가기

Git

4. Git을 이용한 협업 (1), Git-Flow 도입 전

깃을 이용하여 브랜치를 관리하고 협업하는 방법은 매우 다양하다. 정답이 정해져 있지 않으며 팀원끼리 합의 하에 적절한 방법을 찾아 협업하면 된다. 우리 팀 역시 이러한 과정을 거쳤고, 처음 우리가 선택한 방법은 가장 기본적인 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의 내용이 변경되었을 떄 그 변화에 민감하게 반응하지 못한다는 단점이 있다.

 

gitkraken을 사용하여 본 git merge 방법 사용 당시 history

 

우리의 프로젝트에 적용시켜 단점을 다시 정리해보자면, 3명 중 한 명이 추가로 기능을 구현하고 난 후에 본인의 원격 branch에 push 하고 main (master)에 pull request를 보내 merge하게 되면 이 코드는 테스트를 거치지 않고 main branch에 들어가게 되어 이후에 해당 코드에 문제가 생겨 배포를 미루어야 하는 경우 그 부분만 commit을 되돌려야 하는 번거로움이 발생했다. 또 세 명 모두 main branch에 무조건 pull request를 보낼 수 밖에 없는 구조였기 때문에 완성본 혹은 최종본을 저장하는 branch가 존재하지 않았다.

 

 

약 1년간 git merge 방법을 이용해 협업을 진행하면서 이러한 단점을 발견하게 되었고 우리는 많은 개발자들이 깃헙과 깃을 이용해 협업하는 방법이 무엇일까에 대해 고민하게 되었다. 그러던 도중 우리는 git-flow라는 방법에 대해 알게 되었고 rebase를 통한 branch 관리를 공부했다. 그리고 지난 달에 새로운 방식을 도입하여 일년 만에 새로운 협업 방식을 통해 협업을 계속하고 있다. 다음 게시물에서 이야기가 이어진다.