우리는 이번 시간에 git rebase를 사용할 것이다. 그러기 전에 일단 상황을 보자. 우리는 premium브랜치에서 하나의 branch를 더 만들 것이다. 그리고 앞으로 premium 버전의 좀 복잡한 함수를 추가해야 할 때는 추가하기 전에 실험용 branch에서 실험을 하고 나서 premium branch에 추가할 것이다. 간단한 함수들은 premium branch에서 바로바로 추가하지만 실험이 좀 필요한 것들은 실험용 branch에서 좀 실험을 하고 추가할 것이다.

스크린샷 2022-09-03 오후 6.20.24.png

자 이렇게하고 우리는 각각의 branch에 서로 다른 새로운 함수를 추가 시키고 커밋을 할 것이다. 여기까지하고 우리는 회사에서 좋은 소식을 하나 들었다고 가정하자.

스크린샷 2022-09-03 오후 6.23.42.png

바로 실험 브랜치에서 만든 get_median함수를 프리미엄 브랜치에 추가해달라는 말이다. 이제 premium branch에 추가해도 된다는 결정이 내려졌으니 우리는 premium branch에서 test branch를 merge할 것이다.

스크린샷 2022-09-03 오후 6.24.56.png

여기서 merge하면서 에러가 나지만 간단하게 에러를 처리해주고 merge 커밋을 입력해주면 merge가 완료된다.

이것이 첫번째 방법이고 우리는 rebase를 사용하는 두 번째 방법을 사용할 것이다. 일단 premium branch를 merge하기 전으로 돌려야 한다. 돌리고 나서 이번에는 merge커맨드 대신 rebase를 사용해 볼 것이다.

스크린샷 2022-09-03 오후 6.27.20.png

rebase는 베이스를 다시 지정하다 이런 뜻이다. 커밋을 재배치한다. 이렇게 이해해주면 된다. premium branch의 베이스를 test branch로 재지정한다는 뜻이다.

스크린샷 2022-09-03 오후 6.29.32.png

git rebase test를 하면 오류가 발생한다. 아까와 마찬가지로 충돌 오류를 수정해주고 다시 git add.를 해준다. 여기까지는 똑같은데 merge와 다르게 rebase는 git rebase —continue 를 해줘야한다.

스크린샷 2022-09-03 오후 6.31.38.png

이 커맨드는 conflict가 발생해서 제대로 진행되지 못한 리베이스를 계속 진행하라는 뜻이다.

스크린샷 2022-09-03 오후 6.33.51.png

그러면 이런 문장이 출력되는데 이게 무슨 일이 일어난걸까? git history를 통해서 상황을 살펴보자.