Git Branch Strategy & Collaboration Guide
1. Git Branch 구조
main → develop → feature 브랜치
- main: 최종 병합(merge) 브랜치, 배포 자동화 연동
- develop: 기능 개발이 완료된 코드가 모이는 브랜치
- feature: 각 개발자가 맡은 기능별로 작업하는 브랜치
2. Git Workflow
1️⃣ Feature 브랜치 생성 및 개발
git checkout develop # develop 브랜치로 이동
git pull origin develop # 최신 develop 브랜치 코드 가져오기
git checkout -b feature/{기능명} # 새로운 feature 브랜치 생성 후 이동
- ex) git checkout -b feature/login-api
- 해당 브랜치에서 기능 개발 진행
2️⃣ Commit & Push
git add . # 모든 변경사항 추가
git commit -m "[feature] 로그인 API 구현" # 의미 있는 커밋 메시지 작성
git push origin feature/{기능명} # 원격 feature 브랜치에 푸시
3️⃣ Develop 브랜치로 병합 (Pull Request 생성)
- GitHub에서 feature/{기능명} → develop PR 생성
- 팀원 코드 리뷰 후 merge 승인
- develop 브랜치에 merge 완료 후, 로컬 develop 브랜치 최신화 필수
git checkout develop # develop 브랜치로 이동
git pull origin develop # 최신 develop 코드 가져오기
⚠️ 주의: feature 브랜치에서 작업 중, 다른 팀원이 develop에 병합하면 반드시 최신 develop을 pull 받아 충돌 방지!
(아래 블록 내용 꼭 확인)
🔥 Feature 브랜치 작업 중 다른 동료가 develop에 병합한 경우
feature 브랜치에서 작업 중인데 develop 브랜치가 최신화된 경우, 내 feature 브랜치도 최신 develop 내용을 반영해야 함.
✅ 해결 방법
git checkout develop # develop 브랜치로 이동하려면
> 작업 중인 내용이 커밋되지 않은 경우 : git stash로 임시 저장 필요
git stash # 현재 변경사항 임시 저장
git checkout develop
git pull origin develop # 최신 develop 가져오기
git checkout feature/{기능명}
git merge develop # 최신 develop 내용 병합
git stash pop # 이전 작업 복구
> 작업 내용 커밋 완료된 경우 : 바로 merge 진행
git checkout feature/{기능명}
git merge develop # 최신 develop 반영
git push origin feature/{기능명} # 원격 feature 브랜치 업데이트
📌 왜 git merge develop 을 해야 할까?
- git pull origin develop 은 develop 브랜치를 최신 상태로 업데이트하는 과정이지만, 내 feature 브랜치에는 영향을 주지 않음
- 따라서 feature 브랜치에서 최신 develop 변경 사항을 적용하려면 git merge develop 을 실행해야 한다.
🔥 그럼 만약 병합과정(merge)에서 충돌이 발생하면?
같은 파일을 develop 브랜치에서도 수정하고, feature에서도 수정했다면 충돌(conflict)이 발생할 수 있음
1. 충돌 발생 시 git status로 어떤 파일이 충돌했는지 확인
git status
2. 충돌이 있는 파일을 직접 수정
- 파일을 열어보면 <<<<<<< HEAD 와 >>>>>>> develop 같은 표시가 있다.
- 이를 수정해서 올바른 코드로 합친 후 저장
3. 수정한 파일을 add & commit
git add {충돌 해결한 파일명}
git commit -m "[fix] merge conflict 해결"
4. 원격 feature 브랜치에 푸시
git push origin feature/{기능명}
4️⃣ Main 브랜치로 병합 (배포)
- 기능들이 develop에 안정적으로 모이면 develop → main PR 생성
- 코드 리뷰 후 merge 승인
- GitHub Actions로 자동 배포 진행
git checkout main # main 브랜치로 이동
git pull origin main # 최신 main 코드 가져오기
git merge develop # develop 코드 병합
git push origin main # 원격 main 브랜치에 푸시
3. 브랜치 병합 시 발생 가능한 오류 & 해결 방법
🔴 Merge Conflict (충돌 해결)
✅ 해결 방법
1. 충돌이 발생한 파일 확인
git status
2. 충돌이 있는 파일을 직접 수정 (<<<<<<< HEAD 부분 수정)
3. 수정 후 add & commit 진행 + 원격 feature 브랜치에 푸시
git add {충돌 수정한 파일명}
git commit -m "[fix] merge conflict 해결"
git push origin feature/{기능명} # 해결된 코드 푸시
🔴 최신 코드 반영 없이 병합 시 생길 수 있는 오류
✅ 해결 방법
git pull origin develop --rebase
# 충돌이 나면 해결 후 add & commit 진행
git push origin feature/{기능명} --force
⚠️ --force 사용 시 주의! 본인 외 작업한 내용이 날아갈 수 있으므로 꼭 확인 후 진행
4. 팀원 협업 시 유의사항
✅ 브랜치 생성 규칙 준수 (예: feature/login-api)
✅ PR 작성 시 리뷰어 지정 & 코드 리뷰 적극 참여
✅ Merge 후 develop/main 브랜치 최신화 필수 (git pull)
✅ 병합 전 반드시 최신 develop/main 브랜치 코드 반영 (git merge)
✅ 배포는 팀원과 논의 후 진행 (main 브랜치 merge = 배포!)
📌 Git 규칙을 잘 지키면 충돌을 최소화하고 원활한 협업이 가능!! 🚀
🔖 참고 페이지
[Git] Git 협업 할 때 Clone,branch 생성 후 pull request 과정
👍 1. 오픈소스 개발 참여를 위한 Git config(깃 설정) GitHub ID/PW 캐싱데이터 삭제 삭제해도 문제 없음 목적 : 다른 github계정과 충돌 방지 내 GitHub 계정연결 차후 소스코드 커밋파일에 저자정보에 기
velog.io
'IT > 프로젝트' 카테고리의 다른 글
[프로젝트/사이드] 0. 여행동행 서비스 개발 : ERD 및 아키텍쳐 1차 설계 (1) | 2025.04.02 |
---|---|
[프로젝트/설계] 0. 프로젝트 개발 설계 (순서) (1) | 2025.02.15 |
[프로젝트/종료] AWS EC2 인스턴스 종료 (RDS 삭제, 탄력적IP 삭제) (1) | 2025.02.04 |
[프로젝트/대외활동] IAM 계정 활용 AWS EC2 와 S3 연결 (Springboot) ~ ACLs ERROR 400 (4) | 2024.11.02 |
[프로젝트/캡스톤] 메이저인 AI(OCR) 모델 EC2 👉 Lambda 로 변경 (0) | 2024.10.06 |