올바른 Git branch 생성방향이란?

임채현·2022년 2월 13일
0

프로젝트를 하면서 서로의 결과물을 Git으로 관리하고 공유하고 합치고... 너무 당연해졌다. 하지만 프로젝트를 하면서 간과한 것이 있다. Git을 목적에 맞게 제대로 사용했는가??
추후에 프로젝트를 추가적으로 함에 있어 올바르게 Git을 활용하기 위해 블로그에 끄적여본다.

사실 이 Git을 사용함에 있어 절대적인 convention은 없다.
멘토님들이 말씀하신거에 따르면 회사마다 Git을 사용하는 방법은 천차만별이라고 한다.
하지만 Wecode에서 제시해준 Git 사용법에 대한 가이드라인이 통상적이고 효율적이라고 생각하기 때문에
일단 다음 프로젝트부터는 지금 적어놓는 방향성으로 해 볼 생각이다.

Git Branch

  • 프로젝트를 하면서 각각 맡은 작업방향에 따라 Branch를 생성해주었다.
  • Branch를 우리 frontend 프로젝트원들이 정했던 기준은 다음과 같다.
    • 페이지 기준
    • 반복적으로 재사용이 가능한 컴포넌트(ex.footer,nav)

따라서 나같은 경우에는 로그인/회원가입를 맡았기 때문에 Login과 SignUp branch를 팠고 신웅님은 nav/footer를 맡았기 때문에 nav/footer branch, 지홍님은 main branch를 팠다.

당연히 이 방법은 현재 문제가 없다. 하지만 우리의 Git에 대한 문제는 후에 생겼다.
페이지 단위로 branch에서 작업을 하여 commit을 계속 진행하다보니 branch가 너무 무거워졌다.
아래 그림을 보면 로그인/회원가입 branch에 커밋이 96개나 있다.

  • 먼저 branch가 무거우면 merge하기가 힘들며
  • branch의 근본적인 목적인 기능에 따른 작업상황 세분화가 굉장히 모호해진다.

나는 Commit의 제목을 굉장히 세분화하면 될거라 생각했는데 사실 commit 제목을 그렇게 신경써서 다른 팀원들이 세세하게 볼 것 같지가 않다.
멘토님 말씀에 따르면 통상적으로 1개의 branch에는 1-2개의 commit이 적당하다고 하신다.
따라서 Branch의 세분화가 매우 중요하다.

Branch의 세분화는 왜 중요한걸까??

내가 현업에 종사하고있다고 생각을 해보자.
현업에서 어떠한 프로그램을 론칭하여 유지보수를 한다고 했을 때
위의 방식처럼 branch의 세분화가 이루어지지 않았다고 하면 어떤 문제가 생길까?
카카오톡을 예시로 해보자
branch를 카카오톡의 기능별로 세분화를 했다고 하면 전체적 UI 업데이트를 했을 때 갑자기 카카오톡의 친구추가가 먹통이다.
롤백을 한다고 했을 때 친구추가 기능 branch가 문제인지 아니면 다른 branch가 문제인지 쉽사리 확인이 불가능하다.
친구추가 branch를 들어가서 commit 내용을 일일히 뒤져봐야 할 것이다.
따라서 Branch를 최대한 세분화하여 merge시키는 것이 중요하다.
내가 친구추가 기능을 수정하고 싶으면 친구추가 branch에 수정내용 commit을 올리는 것이 아니라
친구추가 수정 branch를 파서 commit을 해야한다는 것이다.

앞으로의 방향

  • Git branch를 최대한 세분화(그냥 하는 내용에 따라 전부)
  • 예를 들면 메인페이지 레이아웃을 한다면 메인페이지 layout branch를 파고 메인페이지 기능별로 다 branch를 판다.
  • merge가 되면 branch를 삭제한다. 추후 수정할 내용이 있다면 그 branch의 내용을 수정하는 내용을 담은 branch를 판다.
  • 이렇게 merge 효율성을 높이고 같은 팀원들이 서로 무엇을 작업하고 완성시켰는지, 무엇을 remote에 반영시켰는지 쉽게 파악할 수 있다. (trello card를 세분화한것과 비슷한 개념이다.)
profile
열심히 살고 싶은 임채현입니다.

0개의 댓글