
주요 브랜치 (Main Branches)
main
maindevelop
feature 브랜치가 합쳐짐develop보조 브랜치 (Supporting Branches)
feature
develop에서 따오고 develop으로 합침feature/뒤에 기능을 한 줄로 설명하는 키워드 작성 (feature/login)release
develop에서 따오고 완료 시 main과 develop 양쪽에 합침release 뒤에 버전 정보를 작성 (release/v1.1.0)hotfix
main에서 직접 따오고, 수정 후 main과develop에 반영hotfix/ 뒤에 버전이나 버그 내용을 작성 (hotfix/v1.1.0 / hotfix/login-error)발생 조건
main 브랜치에서 분기된 feature 브랜치가 진행되는 동안,
main 브랜치에는 아무런 새로운 커밋이 쌓이지 않았어야 함
즉, 두 브랜치의 히스토리가 한 줄기(일직선) 상에 있을 때만 가능
동작 과정
분기: main 브랜치에서 feature 브랜치를 생성하고 작업
진행: feature 브랜치에 커밋이 추가 (이때 main은 멈춰 있어야함)
머지: main 브랜치에서 git merge feature를 실행
결과: Git은 별도의 머지 커밋을 만들지 않고, main의 위치를 feature의 최신 커밋으로 "빨리 감기(Fast-forward)"를 함

실습 화면
README 파일에 TIL 업데이트 후 feature 브랜치에 푸시 후 모습


merge 후 main 브랜치

3-way merge
발생 조건
main 브랜치에서 feature 브랜치를 분기한 후,
main 브랜치와 feature 브랜치 양쪽 모두에 새로운 커밋이 쌓였을 때 발생
이때는 단순히 포인터를 옮길 수 없으므로(Fast-forward 불가), 두 줄기를 합치는 새로운 작업이 필요
동작 과정
공통 조상(Base) 찾기: Git은 두 브랜치가 공통으로 가지고 있는 가장 최근의 커밋(Base)을 자동으로 찾음
변경 사항 비교 (3개 지점):
Base 커밋
main 브랜치의 최신 커밋
feature 브랜치의 최신 커밋
병합 판단:
Base와 비교해 한쪽 브랜치만 수정했다면? → 수정된 내용 반영
Base와 비교해 양쪽 모두 수정했지만, 위치가 다르다면? → 둘 다 반영
Base와 비교해 양쪽 모두 같은 위치를 수정했다면? → 충돌(Conflict) 발생
머지 커밋 생성: 병합이 성공하면 Git은 두 부모를 가지는 새로운 커밋(Merge Commit)을 자동으로 생성

merge를 실행하기 전에 팀원들에게 코드의 품질을 확인받고 토론하는 과정을 거침PR의 주요 흐름 (Workflow)
브랜치 작업: feature 브랜치를 생성하여 기능을 구현
푸시(Push): 로컬에서 작업한 내용을 원격 저장소(GitHub 등)에 올림
PR 생성: GitHub 페이지에서 "Compare & pull request" 버튼을 눌러 PR을 작성
코드 리뷰: 팀원들이 코드를 보고 질문을 남기거나 수정 요청(Request changes)을 함
PR을 왜 사용하나요?
코드 품질 유지: 동료의 눈을 통해 버그를 미리 발견하고 더 나은 코드를 작성하게 됨
변경 이력 기록: 왜 이 코드를 수정했는지 설명(Description)을 남기므로 나중에 히스토리를 파악하기 좋음
충돌 방지: main 브랜치에 직접 커밋하는 위험을 줄이고 안정성을 높임
PR 작성 팁
제목은 명확하게: "로그인 기능 구현" 같이 한눈에 알 수 있게 적음
설명(Description) 추가: 무엇을 왜 수정했는지, 테스트는 어떻게 했는지 상세히 적음
스크린샷/영상: UI 변경이 있다면 사진을 첨부하는 것이 리뷰어에게 큰 도움이 됨
실습 화면

브랜치 전략 (Git Flow)
핵심: 목적에 따라 브랜치 이름을 나누어 관리하는 규칙
종류: 배포용(main), 개발용(develop), 기능추가(feature), 긴급수정(hotfix).
병합 방식 (Merge)
Fast-Forward: 뒤처진 브랜치를 최신 위치로 '빨리 감기' 하는 방식 (일직선일 때).
3-way Merge: 각자 작업한 두 줄기를 공통 조상 기준으로 합치며 '새 커밋'을 만드는 방식.
Pull Request (PR)
핵심: "내 코드 합쳐도 될까?"라고 팀원에게 검토 요청을 보내는 단계
장점: 코드 리뷰를 통해 실수를 줄이고 작업 기록을 상세히 남길 수 있음