[TIL / Git] rebase
rebase
- 병합과 마찬가지로 두 브랜치의 내용을 하나로 합치고 싶을 때 사용한다.
- 현재 브랜치가 대상 브랜치 위로 올라간다.
- 소스트리를 재배치하여 트리를 더 깔끔하게 유지할 수 있다.
- 예를 들어 A브랜치와 B브랜치가 있다.
- master 위치에 테스트 브랜치를 하나 만들어서 B브랜치에 병합한다.
- A브랜치로 체크아웃해서 테스트 브랜치에 rebase한다. → 충돌 나는 건 똑같지만 해결 방법이 다르다.
- 두 변경사항 모두 수락 ⇒ add ⇒ 현재 변경사항을 테스트 브랜치에 재배치 ⇒ 재배치 계속
- 소스트리의 가지가 사라지고 한 줄로 정리된다.
- 테스트 브랜치로 체크아웃 후 브랜치A를 병합한다.
- master를 트리 최상단으로 병합한다.
- 필요없는 브랜치를 모두 삭제한다.
장단점
장점
단점
- 충돌 가능성이 높다.
- 어렵고 위험하다.
- 이미 원격에 있는 브랜치를 rebase하면 안 된다.
P.S.
✍️ 브랜치를 깔끔하게 정리할 수 있다는 점에서 굉장히 매력적이지만, 로컬에서만 사용할 수 있다는 한계 때문에 그리 자주 사용할 일은 없을 것 같다.
Reference