우리는 이번 시간에 git rebase를 사용할 것이다. 그러기 전에 일단 상황을 보자. 우리는 premium브랜치에서 하나의 branch를 더 만들 것이다. 그리고 앞으로 premium 버전의 좀 복잡한 함수를 추가해야 할 때는 추가하기 전에 실험용 branch에서 실험을 하고 나서 premium branch에 추가할 것이다. 간단한 함수들은 premium branch에서 바로바로 추가하지만 실험이 좀 필요한 것들은 실험용 branch에서 좀 실험을 하고 추가할 것이다.
자 이렇게하고 우리는 각각의 branch에 서로 다른 새로운 함수를 추가 시키고 커밋을 할 것이다. 여기까지하고 우리는 회사에서 좋은 소식을 하나 들었다고 가정하자.
바로 실험 브랜치에서 만든 get_median함수를 프리미엄 브랜치에 추가해달라는 말이다. 이제 premium branch에 추가해도 된다는 결정이 내려졌으니 우리는 premium branch에서 test branch를 merge할 것이다.
여기서 merge하면서 에러가 나지만 간단하게 에러를 처리해주고 merge 커밋을 입력해주면 merge가 완료된다.
이것이 첫번째 방법이고 우리는 rebase
를 사용하는 두 번째 방법을 사용할 것이다. 일단 premium branch를 merge하기 전으로 돌려야 한다. 돌리고 나서 이번에는 merge커맨드 대신 rebase를 사용해 볼 것이다.
rebase는 베이스를 다시 지정하다 이런 뜻이다. 커밋을 재배치한다. 이렇게 이해해주면 된다. premium branch의 베이스를 test branch로 재지정한다는 뜻이다.
git rebase test를 하면 오류가 발생한다. 아까와 마찬가지로 충돌 오류를 수정해주고 다시 git add.를 해준다. 여기까지는 똑같은데 merge와 다르게 rebase는 git rebase —continue
를 해줘야한다.
이 커맨드는 conflict가 발생해서 제대로 진행되지 못한 리베이스를 계속 진행하라는 뜻이다.
그러면 이런 문장이 출력되는데 이게 무슨 일이 일어난걸까? git history를 통해서 상황을 살펴보자.