kimgusxo 님의 블로그
3. 깃 브랜치, 병합 및 협업 전략 본문
1. 브랜치(Branch)의 이해와 활용
1-1. 브랜치란?
- 브랜치는 메인 코드 라인에서 분리된 독립적인 작업 공간을 제공한다. 새로운 기능 개발이나 버그 수정 시 메인 코드에 영향을 주지 않고 별도로 작업할 수 있는 공간이다.
- 각 기능을 독립적으로 개발 및 테스트할 수 있다.
- 코드 충돌 가능성을 줄이고 안정적인 메인 브랜치를 유지할 수 있다.
1-2. 브랜치 확인
- 로컬 저장소의 브랜치 확인하기
git branch
- 원격 브랜치까지 포함한 모든 브랜치 확인하기
git branch -a
1-3. 브랜치 생성 및 전환
- 브랜치 생성: "feature/login" 이라는 이름의 새 브랜치를 생성한다.
git branch feature/login
- 브랜치 전환: 특정 브랜치로 전환할 때 사용하며 현재 작업 공간을 해당 브랜치로 이동시킨다.
git checkout feature/login
- 생성과 전환을 한 번에
git checkout -b feature/login
2. 병합(Merge)과 리베이스(Rebase)
2-1. 병합(Merge)
- 다른 브랜치에서 작업한 변경 사항을 현재 브랜치에 합치는 과정이다.
- 장점: 각 브랜치의 히스토리가 그대로 남아있어 작업 과정을 추적하기 좋다.
- 단점: 빈번한 병합 커밋이 생기면 히스토리가 복잡해질 수 있다.
git checkout main
git merge feature/login
2-2. 리베이스(Rebase)
- 한 브랜치의 커밋들을 다른 브랜치의 최신 커밋 위에 재배치하여 깔끔한 직선형 히스토리를 만드는 방법이다.
- 이미 원격에 공유된 브랜치에서 리베이스를 사용하면 혼란을 줄 수 있으므로 개인 작업 브랜치에서 주로 사용한다.
- 충돌이 발생할 경우, 수동으로 해결한 후 "git rebase --continue"를 실행한다.
git checkout feature/signup
git rebase main
3. 충돌(Conflict) 해결 전략
3-1. 충돌 발생 원인
- 동일 파일의 동일부분을 서로 다른 브랜치에서 수정한 경우 발생한다.
3-2. 충돌 해결 방법
- 충돌 확인: 병합이나 리베이스 도중 충돌이 발생하면 해당 파일 내에 <<<<<<<, =======, >>>>>>> 같은 마커가 나타난다.
- 수정: 텍스트 에디터를 열어 충돌 마커를 제거하고 올바른 코드를 선택 또는 수정한다.
- 스테이징 및 커밋: 수정한 파일을 스테이징하고 커밋한다.
git add <충돌해결된 파일>
git commit -m "충돌 해결: <파일명> 수정"
- 도구 활용: VS Code, Meld, KDiff3 등 GUI 기반 충돌 해결 도구를 사용하면 작업하기 편하다.
4. 협업을 위한 브랜치 전략
4-1. Git Flow 구조
- main(또는 master): 배포가능한 상태
- develop: 개발 중인 최신 코드를 저장
- feature/*: 기능 개발 브랜치
- release/*: 배포 전 최종 조정 브랜치
- hotfix/*: 긴급 수정 브랜치
4-2. Github flow 구조
- main: 항상 배포 가능한 상태
- 기능 개발 시 별도의 브랜치를 생성하고 Pull Request를 통해 리뷰 및 병합 진행
'Git' 카테고리의 다른 글
6. 깃 기초 활용 마무리 (0) | 2025.04.08 |
---|---|
5. 깃과 깃허브를 활용한 협업 및 프로젝트 관리 (0) | 2025.03.29 |
4. 깃허브(Github)의 기본 기능 및 활용 (0) | 2025.03.27 |
2. 깃 설치 및 환경 설정, 기본 명령어 (0) | 2025.03.05 |
1. 깃(Git)의 기본 개념과 역사 (0) | 2025.02.28 |