IT/프로젝트

[프로젝트/Github] 깃 협업시 주의사항 정리

토끼개발자 조르디 2025. 2. 16. 18:12

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 생성)

  1. GitHub에서 feature/{기능명} → develop PR 생성
  2. 팀원 코드 리뷰 후 merge 승인
  3. 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 브랜치로 병합 (배포)

  1. 기능들이 develop에 안정적으로 모이면 develop → main PR 생성
  2. 코드 리뷰 후 merge 승인
  3. 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 규칙을 잘 지키면 충돌을 최소화하고 원활한 협업이 가능!! 🚀

 

 

 


🔖 참고 페이지

https://velog.io/@wonizizi99/Git-Git-%ED%98%91%EC%97%85-%ED%95%A0-%EB%95%8C-Clonebranch-%EC%83%9D%EC%84%B1-%ED%9B%84-pull-request-%EA%B3%BC%EC%A0%95

 

[Git] Git 협업 할 때 Clone,branch 생성 후 pull request 과정

👍 1. 오픈소스 개발 참여를 위한 Git config(깃 설정) GitHub ID/PW 캐싱데이터 삭제 삭제해도 문제 없음 목적 : 다른 github계정과 충돌 방지 내 GitHub 계정연결 차후 소스코드 커밋파일에 저자정보에 기

velog.io