본문 바로가기
기타/Git

[Git] branch workflow

by 코딩하는 랄로 2024. 1. 9.
728x90

Git의 branch는 개발을 하는데에 있어서 매우 유용한 도구이다. 이런 도구를 어떻게 활용을 해야 git branch 가 개발자들에게 주는 여러 혜택들을 온전히 누릴 수 있을까? 이번 글에서는 git branch를 활용하기 위한 몇 가지 workflow 에 대해 살펴보자.

 

 

Long-Running branch

Git의 branch의 장점은 가볍다는 점이다. 이러한 장점을 가질 수 있었던 이유 중 하나는 merge를 할 때의 3-way merge 방식은 안정성이 있기 때문이다. 그렇기 때문에 오랜시간에 걸쳐 하나의 branch와 다른 branch를 여러번 merge 하는 것이 쉬운 편이다.

 

그렇기 때문에 필요할 때마다 branch를 생성하고 계속 사용하면서 정기적으로 merge를 진행해준다. 이러한 방식의 workflow가 하나 있는데 바로 배포했거나 배포할 코드만 master branch 에 merge해서 안정된 코드만 master branch에 두는 것이다.

 

개발을 진행 중이거나 아직 안정화 단계를 마무리하지 못한 branch로는 계속 개발을 진행해나가면 되는 것이다. 이 branch는 배포하는 단계가 아니기 때문에 불안정해도 되는 것이다. 언젠가 해당 기능이 개발이 완료되고 안정 단계에 접어들 때 master branch에 merge 하면 된다.

 

결국에는 master branch는 커밋 히스토리 상 가장 뒤에 있게 되는 것이다. 또한 많이 뒤쳐져있다는 것은 그만큼 안정적인 branch 임을 뜻하기도 한다. ( 현재 개발을 진행 중인 다른 branch가 그 만큼 앞서 나가있음에도 merge 할 만큼 안정적이지 못하다는 것이기 때문에 ) 그렇기 때문에 Long-Running branch에서는 master branch가 앞서 나간 branch를 뒤따라가며 나아가게 된다.

 

이 workflow의 장점은 코드를 여러 단계로 나누어 안정성을 높여가며 운영할 수 있다는 점이다. 이러한 점은 프로젝트 규모가 커질 수록 빛을 발한다. 여러 branch를 통해 개발을 진행해나가면서 충분히 안정화 되었을 때 merge를 진행하기 때문에 유용한 workflow 중 하나이다.

 

 

 

Topic branch

위에서도 언급하였듯이, Git은 branch를 생성하고 merge하는 등의 작업이 가변다. 그렇기 때문에 언제든지 중요한 문제가 아니더라도 branch를 생성하고 삭제할 수 있는 것이다. 이러한 장점을 이용한 것이 바로 Topic branch이다. Topic branch는 말 그대로 어떤 한가지 주제나 작업을 위해 짧은 길이를 가지는 branch 이다. 그렇기 때문에 프로젝트의 크기와 관계없이 유용하게 사용할 수 있다.

 

예를 들어, 오류 또는 버그를 해결하기 위한 branch가 여기에 속하는 것이다. 이렇게 주제별로 branch를 만들고 각각의 branch는 독립되어 있기 때문에 언제든지 다른 작업을 위해 branch를 이동할 수 있다. 그러다 완료된 작업 또는 주제가 있으면 언제든지 Merge 하면 되는 것이다.

 

예를 들어, 하나의 상황을 가정해보자. 배포중인 master branch에서 issue가 생겨서 이를 해결하기 위한 issue branch를 생성하였다. 개발을 진행하다가 다른 방식의 해결방법이 생각나서 issue2 branch를 생성하였다. 또한 새로운 기능을 넣기 위한 newIdea branch도 생성하였다. 각가의 브랜치에서 개발을 완료했더니 다음과 같은 커밋 히스토리가 만들어졌다.

 

이 때, 이슈를 해결했던 방법은 issue2 branch가 선택되었고 newIdea로 개발했던 기능도 적용하기로 결정났다. 해당 사항에서 merge를 진행하게 되면 아래와 같이 merge가 진행된다.

 

 

 

 

 

 

 

reference : pro git

728x90

'기타 > Git' 카테고리의 다른 글

[Git] Push  (0) 2024.01.17
[Git] remote tracking branch  (1) 2024.01.11
[Git] branch 관리  (1) 2024.01.09
[Git] Conflict 기초  (2) 2024.01.08
[Git] Merge 기초  (0) 2024.01.04