Git 브랜치로 작업 분리하기
28강. Git 브랜치로 작업 분리하기
이번 강의의 결과물은 새 브랜치에서 포트폴리오 소개 문구를 수정하고, 변경을 main 브랜치에 병합한 Git 기록입니다.
1. 이번 강의에서 해결할 문제
완성되어 동작하는 코드를 직접 수정하다가 기능 전체가 망가지면 되돌리기 부담스럽습니다. 브랜치를 사용하면 안정적인 main에서 작업 흐름을 나누고, 확인이 끝난 변경만 다시 합칠 수 있습니다.
학습 목표
- 완성되어 동작하는 코드를 직접 수정하다가 기능 전체가 망가지면 되돌리기 부담스럽습니다. 브랜치를 사용하면 안정적인
main에서 작업 흐름을 나누고, 확인이 끝난 변경만 다시 합칠 수 있습니다. - 핵심 개념을 코드 예시와 짧은 실습에 적용하고 결과를 설명합니다.
2. 핵심 개념
- 브랜치: 특정 커밋을 가리키며 새 커밋에 따라 이동하는 이름
main: 이 교재 저장소에서 안정된 기준으로 사용하는 기본 브랜치HEAD: 현재 체크아웃한 브랜치 또는 커밋을 가리키는 위치- 병합: 다른 브랜치의 변경 이력을 현재 브랜치에 합치는 작업
- 충돌: Git이 두 변경을 자동으로 합칠 수 없어 사람이 선택해야 하는 상태
기본 작업 흐름:
main: A ─────────── M
\ /
feature: B ─── C ───┘
git switch -c는 새 브랜치를 만들면서 그 브랜치로 이동합니다. 브랜치 전환과 병합의 현재 명령 옵션은 Git switch 공식 문서와 Git merge 공식 문서에서 확인할 수 있습니다.
3. 코드 예시
작업 저장소 위치: D:\WebProject\StartBook\dev-foundations
먼저 현재 변경 상태와 브랜치를 확인합니다.
git status
git branch --show-current
포트폴리오 소개 문구 작업용 브랜치를 만듭니다.
git switch -c docs/update-portfolio-intro
파일명: projects/personal-portfolio/index.html
<p class="hero__intro">
게임의 상호작용과 웹의 사용자 경험을 함께 설계하는 개발자입니다.
</p>
변경을 확인하고 커밋합니다.
git diff
git add projects/personal-portfolio/index.html
git commit -m "docs: refine portfolio introduction"
main으로 돌아가 작업 브랜치를 병합합니다.
git switch main
git merge docs/update-portfolio-intro
git log --oneline --graph --decorate -5
병합이 끝났고 브랜치가 더 필요하지 않을 때만 삭제합니다.
git branch -d docs/update-portfolio-intro
병합된 포트폴리오를 확인할 때의 실행 위치: D:\WebProject\StartBook\dev-foundations\projects\personal-portfolio
python -m http.server 5500
브라우저에서 http://localhost:5500을 열어 소개 문구가 유지되는지 확인합니다.
4. 코드가 동작하는 이유
- 새 브랜치는 생성 시점의 현재 커밋을 가리킵니다.
- 브랜치를 전환하면 작업 트리와 인덱스가 해당 브랜치 상태에 맞게 갱신됩니다.
- 작업 브랜치에서 만든 커밋은 우선 그 브랜치의 끝에만 연결됩니다.
main에서git merge를 실행해야 작업 브랜치 변경이main에 들어옵니다.main에 별도 새 커밋이 없다면 포인터만 앞으로 이동하는 fast-forward 병합이 될 수 있습니다.- 브랜치 이름을 삭제해도 병합된 커밋은
main기록에 남습니다.
브랜치는 폴더 복사본이 아니라 커밋을 가리키는 가벼운 이름입니다. 그래서 기능, 버그 수정, 문서 작업 단위로 짧게 만들고 병합할 수 있습니다.
5. 자주 하는 실수
- 커밋하지 않은 변경이 많은 상태에서 무작정 브랜치를 전환함
- 브랜치 생성 후 현재 브랜치를 확인하지 않고 수정함
- 작업 브랜치에서 바로 배포하고
main에는 병합하지 않음 - 서로 관계없는 변경을 한 브랜치와 한 커밋에 섞음
- 충돌 표시인
<<<<<<<,=======,>>>>>>>를 그대로 커밋함 - 아직 병합하지 않은 브랜치를 강제 삭제함
git branch -d가 원격 GitHub 브랜치도 삭제한다고 생각함
6. 짧은 실습 과제
- 실습 전에
git status가 깨끗한지 확인합니다. practice/change-heading브랜치를 만들고 이동합니다.- 연습용 Markdown 문서 제목 한 줄을 수정합니다.
- 변경 파일만 선택해
practice: update heading으로 커밋합니다. main으로 돌아와 브랜치를 병합합니다.git log --oneline --graph --decorate -5로 커밋 연결을 확인합니다.- 병합된 연습 브랜치를 삭제합니다.
완료 기준은 현재 브랜치를 매 단계 확인하고, 작업 커밋이 병합 후 main 기록에 포함된 것을 설명할 수 있는 것입니다.
7. 이해 점검 질문 3개
- 브랜치와 폴더 복사본은 어떤 점이 다른가요?
- 작업 브랜치의 커밋을
main에 포함하려면 어느 브랜치에서 어떤 명령을 실행해야 하나요? - 병합 충돌이 발생하면 Git이 사용자에게 요구하는 일은 무엇인가요?
핵심 요약
- 이번 강의의 핵심 개념을 코드의 구조와 실행 결과에 연결했습니다.
- 코드 예시를 직접 바꾸는 짧은 실습으로 핵심 동작을 확인했습니다.
- 이해 점검 질문에 답하며 다음 강의에 필요한 기준을 정리했습니다.
Git 브랜치로 작업 분리하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.