리베이스(Rebase)
📄 리베이스(Rebase)
리베이스는 파생된 브랜치의 기준이 되는 베이스 커밋을 변경하는 것입니다.
이런 방법으로 브랜치를 합칠 수 있습니다.
그렇다면 머지와 차이점이 뭘까요?
merge vs rebase
우선 rebase와 merge의 공통점은 브랜치를 합친다는 것입니다.
차이점은 rebase를 하는 경우는 merge보다 깨끗한 commit history를 만들 수 있다는 점입니다.
그림처럼 머지는 새로운 커밋을 생성해서 파생된 브랜치에 적용되지만,
리베이스는 베이스 커밋을 재설정 한 것이기 때문에 마치 처음부터 커밋된 것처럼 선형 브랜치 형태를 띄게 됩니다.
📄 주의할 점!
리베이스를 하는 경우 Base가 바뀐 커밋들은 복사되어 새로 만들어지는데, 이 과정에서 commit Id가 변경됩니다.
이때 다른 개발자와 함께 파생된 브랜치에서 작업을 할 경우, 리베이스를 하면 merge conflict가 발생할 수 있습니다.
그러므로 서버에 업로드된 히스토리는 절대 리베이스하면 안됩니다
📄 순서
-
git checkout (파생된 브랜치)
를 이용해 파생된 브랜치로 이동합니다. -
git rebase master
를 입력해 master 브랜치의 최신버전으로 포인터를 이동시킵니다. -
git merge (파생된 브랜치)
를 이용하면 merge가 가능한 것을 확인할 수 있습니다. -
이후
git branch -d (브랜치명)
을 입력해 쓸모 없어진 브랜치를 삭제해 깔끔하게 정리해 줍니다.
📄 rebase –onto
파생된 브랜치에서 다시 파생된 브랜치의 포인터를 master 브랜치에 옮겨주는 것을 뜻합니다.
이때 rebase --onto
옵션을 사용합니다.
위와 같이 포인터를 옮겨 준 후, merge를 하면 성공적으로 merge된 것을 확인할 수 있습니다.
참고
- 드림코딩
Leave a comment