git branch 전략

별빛사막·2025년 1월 27일

git

목록 보기
4/6
post-thumbnail

핵심 개념

기능별로 Feature 브랜치 만들어서 dev에 merge
최종본을 main에 merge 하는 방식으로 진행

🚀 git 명령어

1. dev 브랜치 이동

git checkout dev

2. feature 브랜치 생성 및 이동

git checkout -b feature/기능명

3. 작업 후 커밋

git add .
git commit -m "작업 내용"

4. 리모트에 feature 브랜치 푸시

git push origin feature/기능명

5. GitHub/GitLab에서 feature -> dev로 PR 생성


🚀 Git 흐름 정리

0️⃣ 처음 프로젝트를 Clone 받는 경우
git clone [repo 주소]
cd 프로젝트폴더

# 1️⃣ Develop 브랜치 생성 (최초 1회만)
git checkout main (local) 
git pull origin main (remote -> local)
git checkout -b develop (local) 
git push origin develop (local -> remote)  # 🚨 다른 팀원이 만들었다면 생략 가능!

# 2️⃣ Feature 브랜치 생성 및 이동
git checkout develop (local) 
git pull origin develop (remote -> local)  # ✅ 항상 최신 develop 가져오기!
git checkout -b feature/기능명 (local) 

# 3️⃣ 개발 후 commit & push
git add . (local) 
git commit -m "기능 추가 설명" (local) 
git push origin feature/기능명 (local -> remote) 

# 4️⃣ GitHub에서 PR(Pull Request) → 코드 리뷰 → Merge

# 5️⃣ Merge 후 Develop 브랜치 최신화 & Feature 브랜치 삭제
git checkout develop (local) 
git pull origin develop (remote -> local) 
git branch -d feature/기능명 (local에서 삭제) 
git push origin --delete feature/기능명 (remote에서 삭제)  # 🚨 GitHub에서 삭제 안 했으면 실행!


🔥 여러 문제 상황 해결 방법

1. 내 feature 브랜치에서 작업 중인데, 다른 팀원이 develop(remote)에 작업을 merge한 경우

👉 git pull origin develop을 실행하여 최신 develop과 동기화해야 한다.

🛠 해결 방법

git add .  # 작업 내용을 먼저 commit
git commit -m "작업 중"

git checkout develop  # develop 브랜치로 이동
git pull origin develop  # 최신 develop(remote->local) 가져오기

git checkout feature/기능명  # 다시 feature 브랜치 이동
git merge develop  # 최신 develop(local) 에 feature/기능명 반영

❓ 이때, git merge 시 충돌이 발생하는 이유는 뭘까?

충돌이 발생하는 이유 = 팀원 A가 수정한 코드와 내가 작업한 코드가 같은 부분을 변경했기 때문
해결 방법 = 항상 git pull origin develop을 먼저 실행해서 최신 상태 유지
Git 충돌 방지 습관 = 새로운 feature 브랜치를 만들기 전에 항상 최신 develop을 가져오기! 🎯


2. 작업 중간중간 계속 git pull origin develop을 하면 충돌이 자주 발생할 수 있고, 내 작업 흐름이 끊길 수도 있지 않나?

👉 그래서 실무에서는 충돌을 최소화하는 전략을 사용

1️⃣ 처음 feature 브랜치를 만들 때 최신 develop을 가져오면, 이후 충돌 가능성을 줄일 수 있음.

2️⃣ 서로 다른 파일을 작업하면, develop을 병합할 때도 충돌 없이 원활하게 진행 가능

❓ 그럼 언제 git pull origin develop을 해야 할까?

👉 내 작업이 거의 끝났을 때 (예: 기능 구현 80~90% 진행 후)
✅ 다른 팀원이 큰 기능을 develop에 merge했을 때 (예: 로그인, 결제 기능 같은 핵심 기능)
✅ PR을 보내기 직전에 최신 develop과 병합할 때

git checkout develop        # develop(local)로 이동
git pull origin develop     # 최신 develop(remote) 가져오기
git checkout feature/기능명  # 내 feature 브랜치로 이동
git merge develop           # 최신 develop과 병합
충돌이 발생하면 해결 후 git add . && git commit -m "충돌 해결"
git push origin feature/기능명

🔥 Merge Commit 발생 원인 및 해결 방법

Merge Commit이 발생하는 이유
: 최신 develop(remote)을 기반으로 feature 브랜치를 생성했어도, 팀원과 내가 동일한 부분을 수정하면 merge conflict가 발생한다

👉 IntelliJ의 3-way Merge UI을 활용해 merge commit을 남겨 merge를 해결
👉 rebase를 이용!

git checkout feature/기능명
git fetch origin develop  # 최신 develop 가져오기
git rebase origin/develop  # 최신 develop 위에서 내 커밋을 재정렬

# 충동난 파일 수정 후

git add .
git rebase --continue  # 충돌 해결 후 rebase 계속 진행
git push origin feature/기능명 --force
profile
조금씩 매일 성장하자

0개의 댓글