// 에드센스

이번에는 branch 생성/전환/삭제와 main 브랜치에서의 merge를 해보겠다.


1. 브랜치란

SW 개발 시 개발자들은 소스코드를 공유하게 된다. 이때, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 브랜치(Branch) 다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있다. 이렇게 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들어 낼 수 있다.

 

즉, 병렬적으로 작업할 수 있고 작업 후에 main으로 병합을 할 수 있는 서브 작업공간 같은 개념

 

 

 


2. Branch 국룰

변수명, 클래스명에서 암묵적인 규칙이 있듯 브랜치도 어느정도 정형화된 용도와 규칙이 있다. 처음 알았다.

 

  • Main (Main Branch)
  • Develop (Main Branch)
  • Feature/<Issue_number> or <Feature_name> / <Short Description>
  • Release/<version_number>
  • Hotfix/<Issue_number> or Issue/<Issue_number>

 

 

 

Main Branch

메인 브랜치는 배포할 수 있는 브랜치다.

즉 최종적인 상태를 의미하는 공간으로 최상위 브랜치다.

 

명명규칙: 보통 main 그대로 쓴다고 한다.

 

 

 

Develop Branch

다음 출시 버전을 개발하는 브랜치

main에서 분기되어 기능 개발을 위한 브랜치들의 병합을 위해 사용됨.

이 브랜치에서 기능을 병합하고 버그를 수정하여 배포 가능한 상태가 되면 main으로 병합한다.

 

명명규칙: 보통 develop 그대로 쓴다고 한다.

 

 

 

Feature Branch

기능을 개발하는 브랜치

새로운 기능이나 버그 수정이 필요할 때마다 develop 브랜치에서 분기된다.

여기서의 작업은 공유할 필요가 없기 때문에 주로 자신의 로컬 저장소에서 관리한다.

 

명명규칙: feature/기능요약 (ex. feature/login)

 

 

 

Release Branch

이번 출시 버전을 준비하는 브랜치

feature 브랜치에서 기능 개발 후 develop 브랜치에서 병합을 하는 과정을 반복하여,

최종적인 버그 수정이나 문서 추가 등 실질적으로 Release하기 직전에 하는 단계를 위한 브랜치

 

명명규칙: release/X.X.X 혹은 release-X.X.X

 

 

 

Hotfix Branch

출시 버전에서 발생한 버그를 수정하는 브랜치

갑작스럽게 수정해야하는 경우에 main에서 수정하지 않고 Hotfix 브랜치로 분기하고 수정 후 main으로 병합한다.

main에서 다시 배포 후에는 develop 브랜치에도 병합해준다.

 

명명규칙: hotfix-X.X.X

 

 

 


3. 모범 예시

 

 

 

 


4. 실습

1. main 브랜치에 최초 커밋을 한다.

어차피 브랜치가 중점이기에 그냥 txt파일로 연습한다.

 

 

 

2. Develop 브랜치 추가하기

현재는 main 브랜치 뿐이다.

 

 

develop 브랜치를 만들어주자.

git branch "브랜치이름"

 

 

develop 브랜치에서 로그인 기능을 만든다고 가정한 feature 브랜치도 만들어 준다.

git branch feature/login

 

 

feature/login 브랜치에 로그인 모듈을 만들어서 푸시 후 develop 브랜치로 merge 해보자

 

feature/login 브랜치로 일단 push 하고

 

develop 브랜치로 이동하여 feature/login을 merge했다.

 

두번의 과정에서 모두 첫 커밋이라 upstream을 설정하라고 에러가 발생했다.

push 뒤에 -set--upstream 옵션을 붙혀주면 된다.

 

 

새로 생성한 브랜치에서 작업이 끝나면 

git branch -d feature/login

명령어로 브랜치를 제거해준다. 이때 merge되지 않은 정보들이 있다면 경고문이 뜨며 -D로 옵션을 바꿔서 진행하라고 알려준다.

 

 

 

 


5. 결과

브랜치 3개가 잘 만들어졌다.

 

 

develop 브랜치로 merge한 feature/login 브랜치의 내용도 잘 들어갔다.

 

 

 

 

 

참고:

+ Recent posts