Git Rebase 이해하기
Git rebase는 기존 커밋 히스토리를 정리하거나 수정하는 데 사용되는 Git 명령어입니다. 이 명령어를 사용하면 기능 브랜치의 변경 사항을 기반 브랜치(예: master 또는 main)의 최신 상태로 옮겨, 마치 처음부터 그 상태에서 작업한 것처럼 만들 수 있습니다.
Rebase의 주요 활용
- 프로젝트 히스토리 정리: Rebase를 통해 작업 히스토리를 더 간결하고 명확하게 만듭니다.
- 충돌 해결: 기능 브랜치 개발 중 메인 브랜치에 발생한 다수의 변경사항을 통합하면서 충돌을 해결할 수 있습니다.
- 코드 리뷰 개선: 기반 브랜치의 최신 상태로 rebase를 진행하면 코드 리뷰어가 변경점을 더욱 명확하게 확인하고 이해할 수 있습니다.
Rebase 과정
최신 상태로 브랜치 업데이트
- Rebase 시작:
git rebase origin/master
- 충돌 발생 시 해결: Git은 충돌이 발생하면 rebase를 일시 중지하고 충돌 해결을 요구합니다. 충돌 해결 후,
git add
를 사용해 변경 사항을 스테이징하고git rebase --continue
를 실행하여 rebase를 계속합니다. - Rebase 완료: 충돌이 없을 경우, rebase가 완료되며 로컬 브랜치는 업데이트된 기반 브랜치의 커밋 위에 위치하게 됩니다.
예제 상황
시나리오
개발자 A는 feature
브랜치에서 작업 중입니다. 동시에 다른 개발자가 master
브랜치에 새로운 커밋을 추가했습니다. 개발자 A는 자신의 feature
브랜치를 master
브랜치의 최신 상태로 업데이트하고자 합니다.
단계별 명령어
$ git checkout feature
$ git fetch origin
$ git rebase origin/master
git checkout feature
: 현재 작업 중인 브랜치를 feature로 변경합니다.git fetch origin
: 원격 저장소 origin에서 최신 데이터를 로컬로 가져옵니다. 이 명령은 origin/master의 최신 상태를 로컬에 반영합니다.-
git rebase origin/master
: feature 브랜치의 커밋들을 origin/master의 최신 커밋 위로 재배치합니다.- 충돌 발생 시: 충돌을 해결하고 git add로 스테이징 후, git rebase –continue로 rebase를 계속합니다.
- 충돌 없이 진행될 경우: 충돌 없이 모든 커밋이 적용되면, feature 브랜치의 헤드는 origin/master의 최신 커밋 다음 위치에 설정됩니다.
이 명령들을 실행함으로써 feature 브랜치는 master 브랜치의 최신 상태를 반영하게 되고, 브랜치 간의 통합이 용이해집니다. 이러한 절차는 팀 내에서 브랜치 관리를 더욱 체계적으로 할 수 있게 도와줍니다.