LabHub

Git 실전 · 브랜치 전략 · 실습

브랜치 전략 실습

LabHub 에서 이어서 보기

목표

저장소 하나를 처음부터 만들어 병합 방식 세 가지(no-ff 머지, 빨리 감기, 체리픽)의 결과가 이력에 어떻게 다르게 남는지 눈으로 확인하고, 그 결과를 숫자로 세어 전략 비교표를 씁니다.

왜 중요한가

브랜치 전략 논쟁은 대개 취향 싸움으로 끝납니다. 그런데 결정을 내리는 진짜 질문은 하나입니다. 장애가 났을 때 이 저장소에서 원인 커밋을 어떻게 찾을 계획인가. --no-ff 머지는 "이 묶음이 언제 통합됐는지"를 남기고, 빨리 감기는 일직선 이력을 주는 대신 통합 시점을 지우며, 스쿼시 머지는 이분 탐색 해상도를 PR 크기로 고정시키고 Git 입장에서는 그 브랜치가 머지된 적이 없게 만듭니다. 이 차이는 설명을 읽어서가 아니라 git rev-list --min-parents=2 로 세어 봐야 몸에 남습니다.

단계

이 이미지에는 전역 git 신원이 설정돼 있지 않습니다. 새로 만드는 모든 저장소에서 git config user.email / git config user.name로컬로 설정하지 않으면 커밋이 실패합니다.

1. /root/gitx1/repo 에 저장소를 만듭니다. 현재 브랜치는 main, 이 저장소에 로컬 user.emailuser.name 이 설정돼 있어야 하며, README.md 를 담은 커밋이 최소 1개 있어야 합니다.
2. feature/login 브랜치를 만들고 커밋 2개를 쌓습니다. 커밋 제목은 정확히 login: form, login: validation 이어야 하고, 브랜치에 login.txt 파일이 있어야 합니다. login: 으로 시작하는 커밋은 정확히 2개여야 합니다.
3. main 으로 이동해 feature/login머지 커밋이 남도록(부모가 둘인 커밋) 병합합니다. 병합 후 mainlogin.txt 가 있어야 합니다.
4. main 에서 feature/quick 브랜치를 만들어 quick.txt 를 추가하는 커밋 하나를 만듭니다. 제목은 정확히 quick: typo 입니다. 그리고 main 에서 빨리 감기로만 병합합니다. 이 커밋의 부모는 1개여야 하고, main 의 머지 커밋 개수는 3단계에서 만든 1개 그대로여야 합니다.
5. main 의 현재 위치에 주석 있는 태그 v1.0.0 을 붙입니다. 태그 메시지는 비어 있으면 안 됩니다.
6. v1.0.0 지점에서 release/1.0 브랜치를 만들고 hotfix.txt 를 추가하는 커밋을 만듭니다. 제목은 정확히 hotfix: null guard 입니다. 그런 다음 같은 변경을 main 에도 반영합니다. 조건: 두 브랜치의 hotfix.txt 내용이 같을 것, 양쪽 모두 hotfix: null guard 커밋을 가질 것, 그러나 두 커밋의 해시는 서로 달라야 합니다.
7. 브랜치를 정리합니다. feature/quick 은 삭제하고, feature/login 은 남기며, 새로 feature/wip 브랜치를 만들어 main 에 없는 커밋을 1개 이상 쌓아 둡니다(아직 병합하지 않은 상태여야 합니다).
8. /root/gitx1/strategy.md 를 씁니다. 반드시 포함할 것:

참고

단계 8개

  1. 저장소 만들고 신원 설정하기
  2. 기능 브랜치에 커밋 2개 쌓기
  3. 빨리 감기 없이 병합하기
  4. 작은 수정은 빨리 감기로 올리기
  5. 릴리스 태그 붙이기
  6. 릴리스 브랜치 핫픽스를 main 으로 가져오기
  7. 병합된 브랜치만 정리하기
  8. 저장소 상태를 세어 전략 비교표 쓰기