git

🌿 Git 브랜치 완벽 이해 — 실무 협업의 핵심 개념

mirabo01 2025. 11. 4. 22:03

“팀 프로젝트 중 기능 하나 고치려는데,
기존 코드가 망가질까 봐 손이 떨린 적 있나요?”

이럴 때 바로 **‘브랜치(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 

💡 해결 방법:

  1. 직접 코드 내용을 수정하고 (중복 제거)
  2. 수정 후 git add .
  3. 다시 커밋:
  4. 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으로 협업하는 법을 배워보자.