Sourcetree를 이용해서 Github에 작성한 PR의 rebase 하기

나는 작년 8월부터 쿠버네티스의 문서 한글화에 꾸준히 기여하고 있다. 특히 집중해서 하는 것은 개념(Concepts)문서에 기여하고 있다. 지금은 현재 맴버를 거쳐 리뷰어도 겸하고 있다(3월이 되면 승인자 신청도 할 예정이다). 하지만, 리뷰어/승인자의 수가 매우 소수이며, 브랜치에 제출되는 PR들은 최소 2~3개인데 이중에 문서 라인 길이로 1,000 라인이 넘어가는 경우에는 리뷰가 길어질수도 있다(예시).

그리고 종종 한글화팀의 브랜치 전략(2주 간격으로 원문이 수정된 문서 반영과 신규 문서 등) 시기를 지나게 되는 경우도 있다. 이럴 경우에는 PR된 항목들에 대해 기준 브랜치를 다른 전략 브랜치로 변경해야하는 rebase를 해야만 한다.

다만, rebase시 PR이 제출된 대상 브랜치를 변경하지 않고 하는 경우에는 브랜치 간에 적용된 수많은 커밋들이 밀려와 PR 을 지저분하게 만들게 된다. 이에 제출된 PR 을 지저분하게 하지 않고 깔끔하게 하는 방법을 소개한다. 여기에는 Sourcetree라는 git을 GUI형태로 보여주는 도구를 사용해서 진행한다.

상황: 새로이 번역된 볼륨 문서가 제출된 브랜치는 dev-1.17-ko.3 이지만, 문서 길이가 있어 다음 브랜치로 넘어간 상황으로, dev-1.17-ko.4로 rebase를 해야한다.

  1. 제출된 PR의 브랜치 변경 Github에 제출된 PR의 대상 브랜치를 변경한다. 이미지와 같이 제목 옆의 “EDIT” 을 클릭해서 브랜치를 변경한다.
  1. Sourcetree 에서 적용할 기준 브랜치를 checkout 한다.
  1. 재배치(rebase)를 한다. 이때, 주의할 점은 PR이 제출된 브랜치로 선택이 되어 있어야 한다.

그리고 dev-1.17-ko.4 위에서 마우스 오른쪽을 클릭하고 “현재 바뀐 내용 재배치” 를 선택한다.

  1. -f 옵션을 이용해서 강제 푸시 Sourcetree에서 푸시를 하면 되지 않는다. 이에 별도의 쉘을 오픈하여 강제로 푸시를 한다.
git push -f origin translate-18283
  1. PR을 확인한다. PR을 보면 1 의 브랜치 변경된 이력과 3 의 강제 푸시가 된 것을 확인할 수 있다.

이렇게 하면 제출된 PR이 지전분하지도 않고 깔끔하기 때문에 오래된 PR을 버리고 새로 작성하지 않아도 된다.