[Git] git flow

강버섯·2022년 1월 2일
0

GIT

목록 보기
3/4

👉 git flow?

git에서 제공하는 branch 기능을 활용한 변경 이력 관리 전략이다.
프로그램으로 생각할 수도 있겠지만 프로그램보다는 협업 중 변경 이력 관리를 더 수월하게 하기 위한 약속, 규칙과 같은 개념이라고 보는 것이 더 맞을 듯하다.

git flow를 사용하기 위해서는 git flow 도구를 설치하면 된다.
설치하지 않고 개념을 이용 혹은 응용해서 사용해도 문제는 없을 듯 하다.

$> brew install git-flow

버전이 여러개 존재하므로 확인하고 원하는 버전을 다운 받으면 된다.

👉 사용하기

✏️ 초기화

사용하고자 하는 디렉토리에서

$> git flow init

을 통해서 git flow 적용을 한다.

init을 실행하면 각 branch 명을 바꿀 수 있는데, 딱히 변경하지 않고 그냥 사용해도 된다.

✏️ Branches

git flow에서 사용하는 branch는 총 6개이다.
1. master : release한 것들
2. develop : 잘 동작하는 코드 + 아직 release하지 않은 코드
3. feature : 새 기능을 만들 때 사용 → develop에서 출발
4. release : develop에서 출발finish할 경우 master과 develop에 모두 merge
5. hotfix : main에서 출발
6. support : 옛날 프로그램 지원

이 중 주요로 사용하는 branch들은 develop, feature, release, hotfix 정도가 될 듯하다.

✅ feature

새 기능을 만들 때 사용하는 branch로 develop branch에서 출발한다.
일반적으로 개발자의 저장소(local)에만 존재한다.

  • devleop branch로부터 feature branch 생성하고 전환
$> git flow feature start feature명
  • feature 생성 완료
$> git flow feature finish feature명

develop branch에 merge하고 branch 삭제 후 develop branch로 전환한다.

  • 원격 서버에 게시
$> git flow feature publish feature명

publish 명령은 git push와 동일하게 remote에 게시를 하는 역할을 수행하므로, 다른 사용자와 협업을 통해 기능을 개발하여 공유가 필요할 경우 사용한다.

✅ release

새 버전을 배포할 때 사용하는 branch이다.
master branch에 merge 될 때에는 release branch 명으로 태그가 달리게 되며, 한 번에 하나의 이름만 사용 가능하고 같은 이름을 재사용할 수 없다.

  • develop branch로부터 release branch 생성하고 release branch로 전환
$> git flow release start release명 [BASE]

[BASE] option을 이용하여 시작할 commit을 선택할 수 있으며, BASE에 해당하는 commit은 develop에 존재해야 한다.

  • 원격 서버에 게시
$> git flow release publish release명

다른 사용자의 release commit을 위해 publish하는 것이 좋다.

  • release 완료
$> git flow release finish release명

명령어를 수행하면,
1. master branch에 병합
2. release를 release 이름으로 tag 달기
3. develop branch에 재병합 + release branch 삭제
순으로 진행된다.
release branch는 develop과 master branch 모두로 merge가 된다.

tag는 같이 push되지 않기 때문에 따로 push해줘야 한다.

$> git push --tag

✅ hotfix

이미 release한 버전에서 문제가 발생할 경우 해결을 위해 사용하는 branch이다.
master branch에서 출발하며, 한 번에 하나의 이름만 사용 가능하고 같은 이름을 재사용할 수 없다.

  • hotfix 시작
git flow hotfix start hotfix버전 [BASE]

master branch에서 표기된 tag로부터 branch 생성하며 [BASE] option을 이용하여 시작점을 선택할 수 있다.

  • hofix 완료
git flow hotfix finish

develop과 master branch로 병합되며, master에는 hotfix 버전으로 태그된다.

profile
무럭무럭 버섯농장

0개의 댓글