공부/Git

[Git] 이력관리를 위한 Rebase Merging

porkbellyYam 2023. 4. 14. 00:34

Rebase merge 는 무엇?

Rebase는 Git에서 브랜치의 이력을 다른 브랜치에 적용하는 작업을 말합니다. Rebase는 Merge와 비슷한 작업을 수행하지만, Merge와는 다른 작업 방식을 사용합니다.

 

Rebase Merge는 기본적으로 브랜치의 이력을 단순화하고 정리하는데 사용됨. Rebase Merge를 수행하면 브랜치 이력으로 선형성이 유지되며, Merge Commit이 생성되지 않음. 그림으로 표현하면 다음과 같음

 

선형성을 유지해서 Git Repo의 이력을 깔끔하고 가독성 좋게 유지할 수 있으므로, 협업에서 유용하다고 한다. 그렇다면 죄다 Rebase Merge로 가독성을 깔끔하게 하면 좋은거 아닌가? 라는 의문이 들어 단점도 찾아보았다.

브랜치 이력이 복잡한 경우, 작업이력이 뒤섞일 가능성이 있다고 한다. 

 

예시)

GitKraken 을 이용한 Git Flow를 살펴보면서 Rebase 흐름을 살펴보자

 

내가 수행한 작업은 Develop 브랜치에서 plant와 clean 브랜치를 만들어 각각의 작업을 수행했다.

 

1. clean 브랜치 생성

2. 청소기 청소하기 완료

3. plant 브랜치 생성

4. plant 브랜치로 이동 & 잡초뽑기 완료

5. 물주기 완료

6. clean 브랜치로 이동 & 세탁기 청소 완료 

7. plant 브랜치로 이동 & 분갈이 완료

8. clean 브랜치로 이동 & 건조기 청소 완료

 

이 상태에서 clean 브랜치를 먼저 Rebase Merge하면?

Git flow에 변화가 생겼다. clean 브랜치에서 작업했던 내용이 develop 브랜치로 편입됨. 좀더 드라마틱한 변화를 보기위해 plant 브랜치도 rebase onto Develop 브랜치 작업을 수행해보자.

 

clean 브랜치와 plant 브랜치에서 commit 했던 내용들이 develop 브랜치에 rebase되어 작업 흐름이 알기 쉽게 바뀜.