홈 › Git › 02 / 8

브랜치와 병합

섹션 7진행 0 / 8

브랜치와 병합 — branch·switch·merge 와 충돌 해결로 작업 나누고 합치기

브랜치(branch)는 커밋(commit)을 가리키는 이름표일 뿐입니다. git branch·git switch 로 작업을 나누고, git merge 로 다시 합칩니다. fast-forward 와 3-way 병합의 차이, 그리고 같은 줄을 두 브랜치가 고쳤을 때 생기는 충돌을 읽고 해결하는 순서를 익힙니다.

1. 왜 배우는가

여러 사람이 같은 저장소(repository)에서 동시에 작업하면 서로의 변경이 부딪힙니다. 브랜치로 작업을 나누면 각자 독립된 공간에서 커밋을 쌓다가, 준비됐을 때만 합칠 수 있습니다. main 브랜치는 항상 배포 가능한 상태로 남습니다.

fast-forward 병합(merge)은 브랜치 포인터만 옮기는 가장 단순한 형태이고, 3-way 병합은 두 갈래 역사를 합쳐 병합 커밋을 만듭니다. 둘의 차이를 모르면 git log --graph 가 왜 어떤 때는 일직선이고 어떤 때는 갈라지는지 이해할 수 없습니다.

같은 파일의 같은 줄을 두 브랜치가 각자 고치면 병합이 멈추고 충돌이 납니다. 충돌 표시를 읽고 정리하는 순서를 익히면 당황하지 않고 몇 초 안에 해결합니다. 예제는 fast-forward, 병합 커밋, 충돌 해결을 스크립트로 그대로 재현합니다.