브랜치(Branch)
이 글의 목차
소요: 20분 · 버전: v0.1 (2026-09-30) · 8장
| 이 장의 질문 | 브랜치는 왜 나누는가 |
|---|---|
| 다루는 것 | 브랜치의 뜻, 새 브랜치 만들기, 브랜치 바꾸기, 바꿀 때 지킬 규칙 |
| 다루지 않는 것 | 브랜치를 main에 합치기(9장), 충돌(10장) |
| 이 장을 마치면 | work 브랜치에서 커밋할 수 있고, main과 work를 오가며 차이를 확인할 수 있습니다 |
1. 브랜치는 따로 자라는 기록의 줄입니다
지금까지는 모든 커밋을 main 에 쌓았습니다. main 은 저장소를 만들 때 생기는 기본 줄입니다. 브랜치(branch) 는 이 줄에서 갈라져 나와 따로 자라는 줄입니다.
| main | work | |
|---|---|---|
| 역할 | 완성된 내용만 두는 줄 | 작업하는 줄 |
| 누가 바꾸나 | 직접 커밋하지 않고, 9장의 병합으로만 바뀝니다 | 내가 자유롭게 커밋합니다 |
| 실수하면 | 모두가 받는 내용이 망가집니다 | main에는 영향이 없습니다 |
작업 중인 것과 완성된 것을 나눠 두면, main은 언제 받아도 믿을 수 있는 상태로 남습니다.
이 장부터의 원칙: main에는 직접 커밋하지 않습니다. 6~7장은 연습이라 main에 바로 커밋했지만, 앞으로는
work에서 작업하고 9장의 방법으로 main에 합칩니다.
2. 실습 1: work 브랜치 만들기
시작하기 전에 위쪽 오른쪽 버튼이 Fetch origin 이고 Changes가 비어 있는지 확인합니다.
- 위쪽 가운데 Current Branch(지금은
main)를 누릅니다. - 목록 위쪽의 New Branch 를 누릅니다.
- Name 에
work를 입력합니다. - Create branch based on… 이 보이면
main을 고릅니다. 이 항목이 보이지 않으면 지금 브랜치(main)를 기준으로 만든다는 뜻이므로 그대로 둡니다. - Create Branch 를 누릅니다.
Current Branch 가 work 로 바뀌었습니다. 아직은 main과 내용이 똑같습니다. 갈라진 뒤 아무것도 하지 않았기 때문입니다.
브랜치 이름은 영문 소문자, 숫자, 하이픈(
-)으로 짓습니다. 띄어쓰기와 한글은 쓰지 않습니다. 예:work,meeting-form
3. 실습 2: work에서 커밋하기
-
VS Code에서
README.md맨 아래에작업 브랜치에서 추가한 줄을 추가하고 저장합니다. -
GitHub Desktop의 Changes에서 diff를 확인합니다.
웹에서 추가한 줄 + 작업 브랜치에서 추가한 줄 -
메모
작업 브랜치에서 한 줄 추가를 쓰고, 파란 버튼을 누릅니다. 버튼 이름이 Commit 1 file to work 인지 봅니다.to main이면 브랜치를 잘못 고른 것이니 누르지 않습니다.
위쪽 오른쪽 버튼이 Publish branch 로 바뀝니다. work 가 아직 내 PC에만 있다는 뜻입니다. 올리는 것은 9장에서 합니다.
4. 실습 3: 브랜치를 바꿔 보기
- Current Branch →
main을 누릅니다. - VS Code의
README.md를 봅니다.작업 브랜치에서 추가한 줄이 없습니다. - Current Branch →
work를 누릅니다. - 다시 봅니다. 그 줄이 돌아왔습니다.
같은 폴더인데 내용이 바뀌는 것은, Git이 폴더 안의 파일을 지금 고른 브랜치의 기록에 맞춰 바꿔 보여 주기 때문입니다. 사라진 것처럼 보여도 지워진 것이 아닙니다.
VS Code에 이전 내용이 계속 보이면 파일 탭을 닫았다가 다시 엽니다.
5. 브랜치를 바꿀 때 규칙
커밋하지 않은 변경이 있는 채로 브랜치를 바꾸면 아래 창이 뜹니다.
| 순서 | 할 일 |
|---|---|
| ① | 이 창이 뜨면 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 를 고릅니다 |