Git이란?


git은 컴퓨터 파일의 변경 사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 오픈소스 분산 버전 관리 시스템이다.

주로 소프트웨어를 개발하며 코드 관리에도 사용되지만 어떠한 프로젝트의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. (나는 보통 소스코드 관리와 변경사항 추적을 목적으로 사용하고 있다)

 

 

 

 

 

Git-flow란?


Git-flow는 Git이 활성화가 될 2010년 정도에 Vincent Driessen이라는 사람이 만든 Git을 사용한 개발 작업 절차이다. Git-flow라고 해서 프로그램 같지만 프로그램이 아닌 약속, 규칙같은 개념이다.

Vincent Driessen또한 Git-flow는 완벽한 방법론이 아닌, 각자 팀에 맞는 개발 환경에 따라 변형해서 사용하는 것이 좋다고 언급했다.

 

 

 

 

Git-flow의 브랜치


Git-flow의 브랜치는 다음과 같이 구성되어 있다.

  • master 와 devleop브랜치
    • master와 develop브랜치가 존재하고, develop브랜치는 master 브랜치에서 시작된 브랜치.
    Develop브랜치
    • develop브랜치에는 상시로 버그를 수정한 커밋들이  추가되게 된다.
    • 새로운 기능을 추가하는  경우  develope 브랜치에서 시작하는 feature브랜치를 생성
    Feature브랜치
    • 이 feature브랜치는 기능 추가 작업이 완료되었다면, develop 브랜치로 merge 
    • 새로운 기능을 추가하는  경우  develope 브랜치에서 시작하는 feature브랜치를 생성
    release 브랜치
    • develop브랜치에 이번 버전에 포함하는 모든 기능이 merge되었다면 , QA를 위해 develop브랜치에서 release브랜치를 생성
    •  QA를 무사히 통과하게되면 relase브랜치를 master와 develop브랜치로  merge
    • QA를  진행하면서 발생한 버그들은 모두 release브랜치에 수정

 

 

master와 develop은 항상 유지되는 메인 브랜치들이며 그 외에 feature, release, hotfixes는 필요한 기간에만 유지되는 보조 브랜치들이다.

 

 

다음은 Vincent Driessen의 블로그에서 Git-flow를 설명할때 사용하는 이미지이다.

 

타임라인을 보면 알겠지만 처음에는 master로 시작해 develop브랜치만 존재한다.

아직 소프트웨어를 배포하지 않았기 때문에 develop브랜치에서 개발을 시작한다.

개발을 진행하다가 추가로 필요한 기능이 생기면 feature브랜치를 생성해 작업을 한다. 

feature브랜치는 언제나 develop브랜치로부터 시작된다.

 

기능을 다 개발했다면 작업한 feature브랜치를 검토한 후 develop브랜치에 병합한다.

이제 이번 버전에서 필요한 기능이 모두 개발되었다면 QA를 위해 release브랜치를 생성한다.

QA를 진행하며 발견하는 버그들은 모두 이 release브랜치를 통해 fix된다.

 

이제 QA과정이 모두 끝났다면 release브랜치를 master와 develop브랜치로 병합한다.

그리고 master브랜치에 버전명시를 위한 태그를 생성 후 배포한다.

 

여기까지가 기본적인 개발 단계에서의 Git-flow이다.

 

 

 

 

하지만 배포 후에도 버그가 발생하는 경우가 있다.

 

그렇다면 긴급하게 수정을 해야하는데 그럴 경우 hofixes브랜치를 생성해 발생한 버그를 수정한다.

버그 수정이 완료되었다면 release브랜치가 완료됬을 때와 같이 master develop브랜치로 병합 후 버그 수정을 완료했다는 태그를 추가한다.

 

 

 

 

 

버전 태그


보통 소프트웨어를 표시할때 버전은 x.x.x의 형태로 이루어진다. 이 숫자들은 무엇을 의미할까? 버전의 가장 첫 번째 숫자는 Major Version을 의미한다. Major Version은 보통 1로 시작해서 소프트웨어 전체적으로 큰 변화가 생겼을때 버전 업을 한다. 두 번째 숫자는 Minor Version을 의미한다. Miner Version은 보통 0으로 시작해서 없던 기능의 추가나 기존 기능의 수정 등의 변화가 발생했을 때 버전 업을 한다. 마지막 세 번째 자리는 Build or Maintenance Version이라고 하며 자잘한 버그나 내부적 코드 보안 등의 변화가 발생했을 때 버전 업을 한다. 이 버전은 0으로 시작하지만 생략하는 경우도 있다.

 

 

 

 

 


Reference.

link1 link2

'🔥 > 기타 등등 🎸' 카테고리의 다른 글

[개발상식] MVC 패턴이란  (0) 2021.08.18

+ Recent posts