본문 바로가기
[개발] 형상관리/Git

Git Rebase

by Devsong26 2023. 12. 6.

Git에서 `rebase`는 기본적으로 한 브랜치의 변경 내용을 다른 브랜치에 적용하는 과정입니다. 이를 통해 깔끔한 선형적인 커밋 히스토리를 유지할 수 있습니다. `rebase`와 `merge`의 가장 큰 차이점은 히스토리의 표현 방식에 있습니다.

 

Git Rebase의 기본 개념

  • 커밋 히스토리의 재배열
    • `rebase`는 기존 브랜치의 커밋들을 임시로 저장한 후, 대상 브랜치의 최신 커밋 다음으로 이 커밋들을 하나씩 적용합니다. 이렇게 하면 마치 해당 변경사항이 대상 브랜치의 최신 상태에서 시작된 것처럼 보이게 됩니다.
  • 충돌 해결
    • `rebase` 과정 중에 충돌이 발생할 수 있습니다. 이때는 수동으로 충돌을 해결하고 `rebase`를 계속 진행해야 합니다.
  • 히스토리 변경
    • `rebase`는 기존의 커밋 히스토리를 변경합니다. 따라서 공개 브랜치에 대해 `rebase`를 사용하는 것은 다른 사용자의 히스토리와 충돌을 일으킬 수 있으므로 주의가 필요합니다.

 


Rebase 사용 방법

 

기본적인 `rebase` 명령어는 다음과 같습니다:

git checkout feature-branch
git rebase master


이 명령어는 `feature-branch`의 변경사항을 `master` 브랜치에 적용합니다. `rebase`가 시작되면, `feature-branch`의 각 커밋이 `master` 브랜치의 최신 커밋 다음에 하나씩 적용됩니다.

 


주의사항

  • 공개 브랜치에서의 사용
    • 다른 사람이 사용하는 브랜치에 `rebase`를 사용하면 문제가 발생할 수 있습니다. 이미 공개된 커밋 히스토리를 변경하면, 다른 사용자가 기대하는 히스토리와 실제 히스토리가 달라져 혼란이 생길 수 있습니다.
  • 충돌 해결
    • `rebase` 중에 충돌이 발생하면, 사용자가 수동으로 해결한 후 `rebase`를 계속 진행해야 합니다. 이 과정은 때때로 복잡하고 시간이 많이 소요될 수 있습니다.

 

 

장점

  • 깔끔한 히스토리
    • `rebase`는 선형적인 커밋 히스토리를 유지하는 데 유용합니다. 이로 인해 변경 사항을 추적하기 쉬워집니다.
  • 코드 통합
    • 기능 개발 브랜치를 메인 브랜치에 `rebase`한 후에 메인 브랜치에 `merge`하면, `merge commit` 없이 변경사항을 통합할 수 있습니다.

 

 

결론

 

`rebase`는 강력한 도구지만, 공개된 브랜치에 적용할 때는 주의가 필요합니다. 개인 브랜치에서 작업하거나, 팀 내에서 `rebase` 사용에 대한 명확한 규칙이 있을 때 사용하는 것이 좋습니다.