기능별로 Feature 브랜치 만들어서 dev에 merge
최종본을 main에 merge 하는 방식으로 진행
git checkout dev
git checkout -b feature/기능명
git add .
git commit -m "작업 내용"
git push origin feature/기능명

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/기능명 반영
✔ 충돌이 발생하는 이유 = 팀원 A가 수정한 코드와 내가 작업한 코드가 같은 부분을 변경했기 때문
✔ 해결 방법 = 항상 git pull origin develop을 먼저 실행해서 최신 상태 유지
✔ Git 충돌 방지 습관 = 새로운 feature 브랜치를 만들기 전에 항상 최신 develop을 가져오기! 🎯
2. 작업 중간중간 계속 git pull origin develop을 하면 충돌이 자주 발생할 수 있고, 내 작업 흐름이 끊길 수도 있지 않나?
👉 그래서 실무에서는 충돌을 최소화하는 전략을 사용
1️⃣ 처음 feature 브랜치를 만들 때 최신 develop을 가져오면, 이후 충돌 가능성을 줄일 수 있음.
2️⃣ 서로 다른 파일을 작업하면, 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이 발생하는 이유
: 최신 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