본문 바로가기

기타 개발

신입 개발자가 반드시 알아야 하는 Git-Flow 모델

728x90

1. Git-Flow란? 

아래의 두 가지 정의 중 하나이다.

 

1) 브랜치를 어떻게 운영할 것인가의 좋은 사례.

 

2) 사례를 쉽게 운영할 수 있도록 도와주는 프로그램을 의미.

 

2. Git - Flow에 사용되는 대표적인 Branch 

출처: 생활코딩

 
  • feature branches : 기능 개발을 할 때 사용한다.
  • release branches: 출시할 때 사용한다.
  • hotfixes: 긴급한 수정사항을 반영할 때 사용한다.
  • master: 언제나 실행 가능한 상태를 유지해야 한다.
  • develop: 실행 가능한 상태를 만들어가는 과정.

3. 대표적인 적용 예시

1) 출시한 버전을 기록하려면
git tag 0.1
 
2) 새로운 기능을 추가하거나, 버그를 고치는 등 =>  develop 브랜치에서 작업한다.  
git checkout -b develop
 
3) 기능 개선이 끝나고 버그가 없으면 출시 준비 => release 브랜치에서 작업한다.  
git checkout -b release/0.2
 
4) 만약 추가로 버그를 픽스해야 하는 등의 상황이 발생할 때 => release에서 작업을 하고, develop 브랜치와 release 브랜치를 병합해야 한다. 
작업물 1
git commit -am "release 0.2 1"
작업물 2

 

git commit -am "release 0.2 2"
 
git checkout develop
 
git merge release/0.2
 

5) master 브랜치 병합

이제 잘 작동하는 걸 확인했다면 master 브랜치로 병합한다. 이럴 경우 일반적인 병합을 사용하지 않고, 아래와 같이 merge commit을 안기는 방식을 사용한다.
git checkout master
 
git merge --no-ff release/0.2
위 처럼 release와 병합했다는 것을 commit 로그 상에 기록으로 남기겠다는 게 git flow의 정책.
(단순 merge를 하지 않았고, --no-ff를 추가했다.)
 
아래는 위의 행동들의 branch 그림들이다. 

merge commit을 의도적으로 만든 이유는 브랜치가 너무 많아지는 것을 방지하기 위해서이다.

 

6) 불필요한 release/0.2 브랜치 삭제

git branch -d release/0.2

이렇게 브런치를 삭제해도 위의 사진처럼 merge commit을 통해서 병합했다는 기록이 남는다.

 

7) 출시 버전을 기록

git tag 0.2

 

이렇게 tag가 변경돼서, 언제라도 출시했던 0.2의 상태로 돌릴 수가 있다.

 

4. 도구

위의 예시들처럼 하는 방식이 git flow이다.
어떻게 느껴지는가? 이 과정에서 직접 모든 작업을 하는 것번거롭고, 실수를 하기 쉽다.

 

이런 실수를 덜하게 하기 위해서는 소프트웨어의 도움을 받으면 좋다. 이때 사용하는 도구가 'Git-Flow'라는 도구이다.
도구에 대한 설명은 이곳을 참고하길 바란다.
 

git-flow cheatsheet

 

danielkummer.github.io

 

 

 

※ 위 글은 생활코딩 내용을 정리한 내용입니다.

728x90