Git Branch의 종류!(feat. Gitflow)

minin·2022년 2월 10일
1

iOS Practices

목록 보기
3/4
post-thumbnail

👩‍💻 새롭게 공부를 하며 기록한 것이기 때문에 틀린 정보가 있을 수 있습니다. 관련한 피드백은 언제나 환영입니다!🙌

오늘 팀빌딩 시간에 멘토님께서 깃 브랜치로 관리해보라고 하시면서 알려주신 것.. 하지만 무슨 말인지 전혀 모르겠는 나는 알려주신대로 냅다 받아 적어 두는데..🥲

origin, main/master만 알고 있는 나∙∙∙
깃을 잘 활용하고 싶으니까 공부해 보도록 하자🙌

1. Gitflow workflow에는 5가지 브랜치가 있다.

...ㅋ.. 깃플로우가 뭔지 아냐고 부터 물어봐 주셨으면..^__^!!

Gitflow?

🔖https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

우선 깃플로우는 Git 브랜치 전략 중 하나인데, Git 브랜치 전략은 여러 사람이 협업을 할 때 동일한 규칙을 공유하고 이를 준수하는 것을 말한다.

그렇다면 Gitflow의 특징은?

Giflow는 feature 브랜치와 여러 primary 브랜치를 사용하는 Git branching model이다.
..?ㅎ.. ;;

위의 사이트에서는 깃플로우를 trunk-based development와 비교를 했다.
물론 난 이것도 모르기 때문에 찾아보니

🥕Trunk-Based Developement(TBD)
: 단일 브랜치에서 모든 작업을 하는 것

그런데 트렁크가 이야기하는 것이 그냥 master에서 모든 작업을 하는 것만을 의미하는 것은 아니고, 여러가지 공통된 룰이 있고, 그를 준수하면서 master에서 작업하는 것이라고 한다.

오늘은Gitflow에 대해 알아보기 위해, 우선 넘어가도록 하자.
(트렁크방식에 대한 자세한 내용은 여기에서 볼 수 있다.)

다시 돌아와서, Gitflow는 단일 브랜치에서 모든 작업을 하는 트렁크 기반 개발과 비교를 했을 때, 더 많은 분기점을 가지고 있다.
nvie의 빈센트 드리센에 의해 처음 출판되어 유명해졌다. 트렁크 기반 개발과 비교하여 Giflow는 더 오래 지속되는 브랜치들과, 더 큰 커밋들을 가진다. 개발자들은 하나의 feature 브랜치를 만들고, 해당 feature의 기능이 완성될 때까지 merge를 미룬다.

Gitflow의 브랜치들

먼저 깃플로우에는 항상 존재하는 브랜치들과, 필요에 따라서 생성되었다가, 삭제되었다가 하는 브랜치들이 있다.

1. 항상 존재하는 Develp branch와 Main branch


깃플로우는 프로젝트의 히스토리들을 기록하기 위해서 mian, develop라는 두 개의 브랜치들을 사용한다.

  • main branch는 배포가 가능한 상태를 말한다. 배포 기록을 가지고 있다.
  • develop branch는 여러 feature 브랜치들을 통합한 것으로, 앞으로 배포될 다음 버전에 대한 기록을 가지고 있다고 할 수 있다.

3. 필요에 따라 생성∙제거 되는 Feature branches


새로 추가되는 기능은 그 브랜치 안에서만 있어야 한다. 백업과 협업을 위해서 푸시를 할 수 있지만, main이 아닌 develop 브랜치를 이용해야 한다! 특정 기능에 대한 개발이 끝나면, develop브랜치에 merge를 하고, main브랜치와는 never 상호작용을 하면 안된다.

4. Release branches


develop 브랜치가 배포를 하기에 충분한 기능을 가지게 되면, develop브랜치로부터 release 브랜치를 분기할 수 있다. 이렇게 릴리즈 브랜치를 만드는 것은, 새로운 릴리즈 싸이클이 시작되는 것을 의미한다. 그래서 이 시점 이후에는 새로운 기능을 추가할 수 없으며, only bug fix, 문서 작업, 그리고 other release-oriented tasks(?)만 수행할 수 있다. 배포를 할 준비가 되면,릴리즈 브랜치는 버전 넘버와 함께 main브랜치로 merge가 된다. 그리고 배포가 된 후에 다시 develop 브랜치로 merge된다.

이렇게 릴리즈만을 위한(dedicated) 브랜치를 사용하면, 한 팀에서 릴리즈를 진행하는 동안에도 다른 팀원들이 계속해서 다음 버전에 대한 개발을 진행할 수 있다.

5. Hotfix branches


hotfix 브랜치는, 유지보수를 위한 브랜치인데, 빠르게 릴리즈를 패치하는데 사용된다.(?)
hotfix 브랜치는, develop브랜치가 아닌 main브랜치 기반이라는 점을 제외하면, release브랜치와 비슷하다. 이 브랜치는 main브랜치에서 갈라져나오는 유일한 브랜치이다. 수정이 완료되면 바로 main, develop, 또는 현재 release로 merge되어야 하고, main 브랜치에는 업데이트된 버전이 태그되어야 한다.
(출시된 것의 버그를 수정하는 역할이라고 생각할 수 있겠다.)

이렇게 버그를 수정만을 위한 브랜치를 사용하면, 위의 릴리즈 브랜치를 사용했을 때와 마찬가지로, 다음 주기를 기다리지 않고 문제를 해결해 나갈 수 있다.

이렇게 Gitflow에서 사용하는 5가지의 브랜치의 종류에 대해서 알아봤다. 이제 메모한 것이 조금 이해가 간다. 다음엔 적용해보고 돌아오겠다!🙌

🔖 참고

profile
🍫 iOS 🍫 Swift

0개의 댓글