“팀 프로젝트 중 기능 하나 고치려는데,
기존 코드가 망가질까 봐 손이 떨린 적 있나요?”
이럴 때 바로 **‘브랜치(Branch)’**를 사용해야 한다.
브랜치는 코드 실험, 기능 추가, 버그 수정 등을
독립적인 공간에서 안전하게 진행할 수 있게 해준다.
이번 글에서는 Git 브랜치의 개념부터 생성, 이동, 병합, 충돌 해결까지
단계별로 완벽히 정리해본다.
💡 1. 브랜치(Branch)란?
“브랜치는 같은 프로젝트 안에서 독립적으로 작업할 수 있는 분기점이다.”
Git의 모든 코드는 ‘나뭇가지(branch)’처럼 분기된다.
메인(main) 줄기는 그대로 두고,
새로운 가지를 만들어 작업한 뒤
문제가 없으면 다시 메인 줄기에 합치는 구조다.
📘 즉,
“브랜치는 실험 공간, 메인은 결과물 저장소”
🧱 2. 브랜치가 왜 필요한가?
🔹 문제 상황
팀원 A: 로그인 기능 수정
팀원 B: 결제 기능 추가
둘이 같은 파일을 동시에 수정한다면?
→ 충돌(conflict)이 발생한다.
이를 방지하기 위해,
각자 별도의 브랜치에서 작업한 뒤
완성되면 메인(main) 브랜치로 병합한다.
💬 한 줄 요약:
“브랜치는 협업에서 충돌을 최소화하고, 안전하게 기능을 개발할 수 있게 해준다.”
⚙️ 3. 브랜치 만들기 (git branch)
git branch feature/login
이 명령은 새로운 브랜치를 만든다.
하지만 아직 이동은 안 한 상태다.
현재 브랜치 확인 👇
git branch
✅ 결과
* main
feature/login
💬 별표(*)가 붙은 브랜치가 현재 위치다.
🚀 4. 브랜치 이동하기 (git switch or checkout)
이제 새 브랜치로 이동하자.
git switch feature/login
# 또는
git checkout feature/login
✅ 결과
Switched to branch 'feature/login'
이제 feature/login 브랜치에서 새로운 코드를 작성할 수 있다.
메인(main) 브랜치에는 아무 영향이 없다.
🧩 5. 브랜치에서 작업 후 커밋하기
echo "console.log('Login feature');" > login.js
git add .
git commit -m "로그인 기능 추가"
이 커밋은 feature/login 브랜치에만 반영된다.
즉, 메인(main)은 여전히 깨끗한 상태다.
🔍 6. 브랜치 병합 (git merge)
작업이 끝났다면 브랜치를 메인에 합치자.
# 1. main 브랜치로 이동
git switch main
# 2. feature/login 병합
git merge feature/login
✅ 결과
Updating a3d8e4..b9f2d1
Fast-forward
login.js | 1 +
1 file changed, 1 insertion(+)
💬 Fast-forward란?
→ 메인 브랜치가 단순히 feature/login의 최신 상태로 ‘앞으로 이동’한 것.
충돌 없이 깔끔히 병합된 상태다.
⚔️ 7. 충돌(conflict) 발생 시 해결 방법
가끔 두 브랜치가 같은 파일을 수정하면 충돌이 난다.
예시 상황 👇
- main: console.log("Hello")
- feature: console.log("Hi")
병합 시 결과:
<<<<<<< HEAD
console.log("Hello")
=======
console.log("Hi")
>>>>>>> feature/login
💡 해결 방법:
- 직접 코드 내용을 수정하고 (중복 제거)
- 수정 후 git add .
- 다시 커밋:
- git commit -m "충돌 해결"
✅ 이제 병합 완료!
🧠 8. 브랜치 삭제 (git branch -d)
기능 개발이 끝났다면
사용하지 않는 브랜치는 정리하는 것이 좋다.
git branch -d feature/login
✅ 결과
Deleted branch feature/login (was b9f2d1).
💬 -d는 안전 삭제(병합된 브랜치만 삭제 가능)
-D는 강제 삭제 (주의!)
🌿 9. 브랜치 흐름 시각화
git log --oneline --graph --all
✅ 예시 출력
* b9f2d1 (feature/login) 로그인 기능 추가
* a3d8e4 (main) 초기 커밋
이 명령은 브랜치의 전체 흐름을 시각적으로 보여준다.
팀 협업 시 어떤 브랜치가 어디서 갈라지고, 어디로 합쳐졌는지 쉽게 파악 가능하다.
⚡ 10. 실무에서 브랜치 네이밍 규칙
팀에서 일할 땐 브랜치 이름을 일관성 있게 짓는 게 중요하다.
브랜치 이름 용도
| main | 최종 배포용 브랜치 |
| develop | 개발 통합 브랜치 |
| feature/login | 로그인 기능 개발 |
| fix/typo | 간단한 오타 수정 |
| hotfix/critical-bug | 긴급 버그 수정 |
💬 Tip:
브랜치 이름만 봐도 무슨 작업인지 한눈에 알 수 있게 만들자.
🧩 11. 브랜치 관리 꿀팁 요약
상황 명령어 설명
| 브랜치 생성 | git branch 브랜치명 | 새 가지 만들기 |
| 브랜치 이동 | git switch 브랜치명 | 이동 |
| 브랜치 병합 | git merge 브랜치명 | 코드 통합 |
| 브랜치 삭제 | git branch -d 브랜치명 | 불필요한 가지 삭제 |
| 브랜치 흐름 보기 | git log --graph --oneline --all | 시각적 확인 |
🏁 마무리 — “브랜치를 이해하면 협업이 쉬워진다”
브랜치는 단순한 기능이 아니라 협업의 기본 단위다.
팀이 클수록, 프로젝트가 복잡할수록
브랜치를 잘 관리하는 개발자가 실수를 줄이고 속도를 높인다.
💬 “Git 브랜치는 개발자의 실험실이다.”
마음껏 코드를 바꿔도, 원래 상태로 언제든 돌아갈 수 있다.
다음 편에서는
✅ 원격 저장소(GitHub)에 연결하고
✅ push, pull, clone으로 협업하는 법을 배워보자.
'git' 카테고리의 다른 글
| ⏪ Git 되돌리기 완벽 정리 — reset, revert, restore 차이 한 번에 이해하기 (0) | 2025.11.04 |
|---|---|
| ☁️ GitHub로 원격 저장소 연결 및 푸시(push) 완전 정복 (0) | 2025.11.04 |
| ⚙️ Git 기본 설정과 로컬 저장소 만들기 (0) | 2025.11.04 |
| 🧭 Git이란? — 버전 관리의 개념부터 이해하기 (0) | 2025.11.04 |
| 🧭 개발자가 알아야 할 Git 기본 명령어 정리 (0) | 2025.11.04 |