[GIT] rebase 란 무엇인가?
Git Rebase 란 무엇인가
Git Rebase 란 말 그대로 base를 재설정한다는 의미로, 하나의 브랜치가 다른 브랜치에서 파생되서 나온 경우, 다른 브랜치에서 진행된 커밋을 다시 가져와서 base를 재설정하는 것입니다. 새로운 커밋을 기반으로 작업을 함으로써 파생된 브랜치는 병합시에 conflict 없이 자신의 브랜치에 진행된 커밋을 반영할 수 있습니다.
병합을 하면 위 처럼 main 브랜치의 커밋을 feature 브랜치로 병합을 함으로써 feature 브랜치에 새로운 커밋이 발생합니다.
반면, rebase를 하면 위 그림에서 흰색 커밋을 마지막으로 feature 브랜치가 생성되었다 하더라도, 하늘색의 새로운 main브랜치의 커밋을 포함해 rebase를 함으로써 마치 하늘색 커밋들이 처음 커밋된 것처럼 선형 히스토리를 남길 수 있게 됩니다.
Git Rebase 의 장점
Git Rebase를 하면 파생된 브랜치의 커밋이력이 기준 브랜치와 같아지므로 작업순서대로 커밋 이력이 남게 됩니다. 그러으로써 커밋 히스토리가 시간순서대로 반영되어 이력관리가 용이해집니다. 나아가 merge를 통해 발생하는 불필요한 병합 커밋을 제거할 수 있습니다. 병합시에는 병합 커밋 이력이 남기 때문에 히스토리에 불필요한 커밋이 늘어나게 됩니다. 하지만 rebase는 마치 하나의 브랜치에서 작업된 것처럼 병합이 아닌 선형의 커밋 히스토리가 남기 때문에 작업이력을 확인하기 편합니다.
Git Rebase 의 유의점
파생된 브랜치를 여러 사람이 사용하고 활발하게 커밋이 일어나는 브랜치라고 한다면, Rebase를 하는 것은 자칫 위험할 수 있습니다. 왜냐하면 파생된 브랜치에서 이미 새로운 커밋이 발생하고 작업이 기록되고 있는데 이전 기준 브랜치로 base를 변경해버리면 파생브랜치로 작업하고 있던 작업자들의 커밋 히스토리가 변경되어 버리기 때문입니다. 각 작업자들은 자신의 커밋을 다시 반영하거나 재작업을 해야 할 수도 있습니다. 따라서 혼자 작업하는 브랜치나 작업하는 사람이 적어 문제상황이 발생할 확률이 적은 경우에만 주의깊게 사용해야 합니다.