브랜치(Branch)

이 글의 목차

소요: 20분 · 버전: v0.1 (2026-09-30) · 8장

이 장의 질문브랜치는 왜 나누는가
다루는 것브랜치의 뜻, 새 브랜치 만들기, 브랜치 바꾸기, 바꿀 때 지킬 규칙
다루지 않는 것브랜치를 main에 합치기(9장), 충돌(10장)
이 장을 마치면work 브랜치에서 커밋할 수 있고, main과 work를 오가며 차이를 확인할 수 있습니다

1. 브랜치는 따로 자라는 기록의 줄입니다

지금까지는 모든 커밋을 main 에 쌓았습니다. main 은 저장소를 만들 때 생기는 기본 줄입니다. 브랜치(branch) 는 이 줄에서 갈라져 나와 따로 자라는 줄입니다.

main 줄의 세 번째 커밋에서 work 줄이 갈라져 나와, work에 쌓은 커밋은 main에 자동으로 들어가지 않는다는 그림
mainwork
역할완성된 내용만 두는 줄작업하는 줄
누가 바꾸나직접 커밋하지 않고, 9장의 병합으로만 바뀝니다내가 자유롭게 커밋합니다
실수하면모두가 받는 내용이 망가집니다main에는 영향이 없습니다

작업 중인 것과 완성된 것을 나눠 두면, main은 언제 받아도 믿을 수 있는 상태로 남습니다.

이 장부터의 원칙: main에는 직접 커밋하지 않습니다. 6~7장은 연습이라 main에 바로 커밋했지만, 앞으로는 work 에서 작업하고 9장의 방법으로 main에 합칩니다.

2. 실습 1: work 브랜치 만들기

시작하기 전에 위쪽 오른쪽 버튼이 Fetch origin 이고 Changes가 비어 있는지 확인합니다.

Current Branch를 눌러 New Branch를 고르고, Create a Branch 창에 work를 입력한 뒤 Create Branch를 누르는 그림
  1. 위쪽 가운데 Current Branch(지금은 main)를 누릅니다.
  2. 목록 위쪽의 New Branch 를 누릅니다.
  3. Name 에 work 를 입력합니다.
  4. Create branch based on… 이 보이면 main 을 고릅니다. 이 항목이 보이지 않으면 지금 브랜치(main)를 기준으로 만든다는 뜻이므로 그대로 둡니다.
  5. Create Branch 를 누릅니다.

Current Branch 가 work 로 바뀌었습니다. 아직은 main과 내용이 똑같습니다. 갈라진 뒤 아무것도 하지 않았기 때문입니다.

브랜치 이름은 영문 소문자, 숫자, 하이픈(-)으로 짓습니다. 띄어쓰기와 한글은 쓰지 않습니다. 예: work, meeting-form

3. 실습 2: work에서 커밋하기

  1. VS Code에서 README.md 맨 아래에 작업 브랜치에서 추가한 줄 을 추가하고 저장합니다.

  2. GitHub Desktop의 Changes에서 diff를 확인합니다.

      웹에서 추가한 줄
    + 작업 브랜치에서 추가한 줄
    
  3. 메모 작업 브랜치에서 한 줄 추가 를 쓰고, 파란 버튼을 누릅니다. 버튼 이름이 Commit 1 file to work 인지 봅니다. to main 이면 브랜치를 잘못 고른 것이니 누르지 않습니다.

위쪽 오른쪽 버튼이 Publish branch 로 바뀝니다. work 가 아직 내 PC에만 있다는 뜻입니다. 올리는 것은 9장에서 합니다.

4. 실습 3: 브랜치를 바꿔 보기

work에서는 README에 작업 브랜치에서 추가한 줄이 있고, main으로 바꾸면 그 줄이 없는 그림
  1. Current Branch → main 을 누릅니다.
  2. VS Code의 README.md 를 봅니다. 작업 브랜치에서 추가한 줄 이 없습니다.
  3. Current Branch → work 를 누릅니다.
  4. 다시 봅니다. 그 줄이 돌아왔습니다.

같은 폴더인데 내용이 바뀌는 것은, Git이 폴더 안의 파일을 지금 고른 브랜치의 기록에 맞춰 바꿔 보여 주기 때문입니다. 사라진 것처럼 보여도 지워진 것이 아닙니다.

VS Code에 이전 내용이 계속 보이면 파일 탭을 닫았다가 다시 엽니다.

5. 브랜치를 바꿀 때 규칙

커밋하지 않은 변경이 있는 채로 브랜치를 바꾸면 아래 창이 뜹니다.

Switch Branch 창의 두 선택지와 Cancel 버튼, 옆에 이 창이 뜨면 Cancel, 먼저 커밋, 그다음 브랜치를 바꾼다는 규칙
순서할 일
①이 창이 뜨면 Cancel 을 누릅니다
②지금 브랜치에서 작업을 마저 끝내고 커밋합니다. 버릴 변경이라면 7장의 Discard Changes로 버립니다
③Changes가 빈 상태에서 브랜치를 바꿉니다

창의 두 선택지(변경을 잠시 보관하기, 다른 브랜치로 가져가기)는 쓸 줄 알면 편하지만, 변경이 어느 브랜치에 있는지 헷갈리기 쉽습니다. 이 튜토리얼에서는 쓰지 않습니다.

예외 하나: work에서 해야 할 작업을 실수로 main에서 시작했고 아직 커밋하지 않았을 때만, work로 바꾸면서 Bring my changes to work 를 고릅니다. 고친 내용이 그대로 work로 옮겨지고 main에는 남지 않습니다. 이 경우 말고는 Cancel입니다.

확인

확인 문제

① work에서 커밋한 내용이 main에도 들어가나요? 들어가지 않습니다. 브랜치는 따로 자랍니다. main에 넣으려면 9장의 병합이 필요합니다.
② main으로 바꿨더니 방금 쓴 줄이 사라졌습니다. 지워진 건가요? 아닙니다. 그 줄은 work의 기록에 있습니다. work로 바꾸면 다시 보입니다.
③ 브랜치를 바꾸려는데 "You have changes on this branch" 창이 떴습니다. 어떻게 하나요? Cancel을 누르고, 지금 브랜치에서 먼저 커밋한 뒤 바꿉니다.

자주 발생하는 문제

증상확인할 것
커밋 버튼이 Commit to main 입니다Current Branch가 main입니다. 커밋하지 말고 work로 바꿉니다. 변경이 있어 창이 뜨면 5절의 예외대로 Bring my changes to work 를 고릅니다
이미 main에 커밋해 버렸습니다연습 저장소라면 그대로 두어도 됩니다. 되돌리고 싶다면 7장의 Revert를 main에서 합니다
New Branch를 눌렀더니 이름이 이미 있다고 나옵니다이미 work 가 있습니다. 목록에서 work 를 고릅니다

다음 장

9장. PR(Pull Request)과 병합(Merge)

© KYONGHO ENGINEERING & ARCHITECTS