본문 바로가기

QA 업무

[CI/CD] 4. 브랜치로 나누어 관리하기

4.1 버전을 나누어 관리하는 이유

브랜치 : 버전을 여러 흐름으로 나누어 관리하는 방법

 

3단계로 버전 관리하는 방법

1. 브랜치를 나눈다. 

2. 각자의 브랜치에서 작업한다.

3. 필요한 경우 나눈 브랜치를 합친다.

 

최초의 branch : master branch

우리가 만든 커밋은 모두 master branch에 속함

 

hard : 현재 작업 중인 브랜치의 최신 커밋을 가리키는 일종의 표시

브랜치를 나누고 합치는 과정에서 head의 위치를 자유자재로 바꿀 수 있음

특정 브랜치로 체크아웃하게 되면 head의 위치가 해당 브랜치의 최신 커밋을 가리키고, 작업 디렉터리는 체크아웃한 브랜치의 모습으로 바뀌게 됨

 

브랜치 이름을 마음대로 지어도 되는지?

브랜치 이름을 임의로 지어도 무방하나,실무에선느 브랜치 이름을 암묵적으로 정해두는 경우가 많음

ex. 새로운 기능을 개발하기 위한 브랜치는 feature/<새기능>, 릴리스를 준비하기 우히ㅏㄴ 브랜치 이름은 release/<릴리스 번호>, 급하게 수정해야 하기 위한 브랜치 이름은  hotfix/<수정사항> 으로 이름 명명 가능함

 

세 개의 커밋을 만들고 foo 라는 브랜치 만듦, 새 브랜치 체크아웃을 한다는 말은 작업 환경을 foo 브랜치로 바꾼다는 말
현재 작업 환경이 foo 브랜치임을 확인

4.2. 브랜치 병합하기 

브랜치를 하나로 통합하는 것을 병합, merge

 

*빨리 감기 병합 Fast-Forward Merge (책 내용 참고 144페이지)

Fast-Forward Merge는 두 브랜치 간의 병합 과정에서 새로운 커밋을 생성하지 않고, 단순히 브랜치를 앞쪽으로 이동시키는 방식입니다.

이것은 병합하려는 브랜치가 현재 브랜치의 직속 후속(commit history 상의 연속)일 때 가능합니다.

 

 

현재 branch(master) foo branch 병합됨, master branch는 foo branch와 같아짐

foo 브랜치에서 더 이상 작업하지 않을 예정이라면 병합 후 foo 브랜치를 삭제하는 것이 좋음

브랜치 삭제 시 삭제하려는 브랜치가 아닌 다른 브랜치에 체크아웃 되어 있어야 함, bar 브랜치 삭제하려면 master 브랜치 또는 foo 브랜치로 체크아웃 되어 있어야 함

 

master 브랜치에서 bar 브랜치 4번 커밋이 병합됨, 그래프가 복잡함
해시가 생성됨
시간이 오후 1시 13분~

4.3 충돌 해결하기

병합하려는 두 브랜치가 서로 같은 내용을 다르게 수정한 상황을 의미

충돌이 발생하면 브랜치가 한 번에 병합되지 못함

ex. foo 브랜치에서 a.txt 첫 번째 줄을 c로 커밋 master 브랜치에서 a.txt 첫 번째 줄을 b로 수정한 커밋 

위 두 커밋을 병합하면 충돌이 발생하나, 깃도 모름! 어떤 브랜치의 내용을 반영할 지 여러분이 직접 선택!

 

충돌 해결하기

=> 같은 내용을 다르게 수정한 브랜치 중 어떤 브랜치 내용을 최종적으로 반영할지를 직접 선택하는 것을 충돌 해결한다고 표현함

 

4.4 브랜치 재배치하기

rebase