
🔍 배경 설명
협업 중 내가 작업하던 코드와 다른 팀원의 수정 코드가 충돌할 가능성이 있음!
이를 해결하려면 업스트림의 최신 변경 사항을 내 로컬 브랜치에 반영하는 과정이 필요함.
📌 예제 상황
- 나는 feature/my-feature 브랜치에서 작업 중
- 다른 팀원이 main 브랜치에서 같은 부분을 수정하여 업스트림(upstream)에 반영함
- 이를 모르던 나는 나중에 git fetch upstream을 해서 최신 변경 사항이 있음을 알게 됨
- 최신 변경 사항을 내 작업 브랜치에 반영하려면 어떻게 해야 할까? 🤔
✅ 1. 최신 변경 사항 가져오기
업스트림(upstream)의 최신 변경 사항을 가져오고 내 로컬 main 브랜치를 최신 상태로 유지하는 과정
git fetch upstream # (1) 최신 변경 사항 가져오기
git checkout main # (2) 내 로컬 main 브랜치로 이동
git merge upstream/main # (3) 내 로컬 main을 최신 상태로 병합
git push origin main # (4) 내 GitHub 저장소(origin)에도 반영
📌 결과
✅ 업스트림(main)의 최신 코드가 내 로컬 main과 동기화됨
✅ 이제 내 작업 브랜치(feature/my-feature)에도 최신 변경 사항을 반영해야 함
✅ 2. 내 작업 브랜치에 최신 변경 사항 반영하기
업스트림(main)과 동기화된 내 로컬 main을 바탕으로 작업 브랜치를 업데이트하는 방법은 두 가지가 있음.
🟢 방법 1: git merge main (머지)
git checkout feature/my-feature # (1) 내 작업 브랜치로 이동
git merge main # (2) 최신 main을 내 작업 브랜치에 병합
📌 특징
✅ 충돌 해결이 쉬움
❌ 머지 커밋(Merge Commit)이 생겨 히스토리가 복잡해질 수 있음
🟢 방법 2: git rebase main (리베이스, 깔끔한 히스토리 유지)
git checkout feature/my-feature # (1) 내 작업 브랜치로 이동
git rebase main # (2) 최신 main을 기반으로 내 브랜치 정리
📌 특징
✅ 히스토리가 깔끔해짐 (불필요한 Merge Commit 없음)
❌ 충돌이 발생하면 해결해야 함 (다소 번거로울 수 있음)
✅ 3. git rebase 충돌 해결 방법
리베이스 중 충돌(conflict)이 발생하면 Git이 알려줌!
수정 후 다시 리베이스를 계속 진행하면 됨.
⚠️ 리베이스 중 충돌 발생 시 해결 방법
git add <충돌 해결한 파일>
git rebase --continue # 리베이스 계속 진행
🚨 만약 충돌이 너무 많아서 되돌리고 싶다면?
git rebase --abort # 원래 상태로 되돌리기
📌 주의: git rebase 후에는 히스토리가 변경되므로 강제 푸시 필요할 수도 있음
git push origin feature/my-feature --force # 강제 푸시
⁉️ git rebase가 꼭 필요한가?
🚀 필수는 아니지만, 히스토리를 깔끔하게 유지하고 싶다면 사용하는 것이 좋음!
✅ 그냥 최신 내용을 반영하고 싶다면 git merge main으로 충분함
✅ 팀에서 "Merge Commit이 많으면 보기 어려우니 깔끔하게 유지하자"는 규칙이 있다면 git rebase main이 더 좋음
'🏛️ [Archive] 개발 프로젝트 & 회고 > GitHub 관리 도구 🛠️' 카테고리의 다른 글
| 🚀 Git 팀 협업을 위한 가이드 (0) | 2025.02.18 |
|---|---|
| [Python] Git의 기본 작업 흐름🛠️ (2) | 2024.12.26 |
| GitHub를 왜 사용하는데요? (0) | 2024.12.22 |
| [NAVER BOOST CORCE: Github으로 따라하는 버전 관리] - 완강 후기 및 리뷰 (4) | 2024.09.04 |