Tag Archives: rebase

Git Pull시에 자동으로 Rebase적용하기

이번글은 git pull시에 rebase를 사용할것인지 말것인지에 대한 이야기는 아닙니다. 프로젝트를 진행하다 보니 일반적으로 많은 분들이 일직선의 커밋 히스토리를 선호하시는것을 알게 되었습니다. 일반적으로 merge를 통해 만들어진 히스토리는 복잡하고 이해하기가 쉽지 않습니다. rebase를 이용하여 pull을 하여 만들어진 히스토리를 직관적입니다. 예를 들어 다음과 같은 작업은 소스코드의 머지를 발생시킵니다.

  1. git pull (로컬의 소스를 최신으로 업데이트하기 위해 수행)
  2. 개발을 진행
  3. git commit
  4. git pull
  5. git push

기본적으로 git pull은 리모트로부터 새로운 커밋들을 가져옵니다. 그리고 로컬의 코드들에 머지(merge)를 합니다. 이러한 과정이 일명 머지버블(merge bubble)을 발생시킵니다. 좀 더 개선을 위해 git pull 대신에 git pull –rebase 명령을 사용하는것을 생각해 볼 수 있습니다. 이 명령은 리모트로부터 가져온 커밋들 뒤에 새로운 나의 커밋들을 추가합니다.

rebase_5

여러분의 git가 pull시에 기본적으로 merge를 사용하지 않고 rebase를 선택하도록 설정할 수 있습니다. 다음의 명령은 이후의 모든 브랜치들에 대해 기본적으로 rebase를 하도록 합니다.

$ git config --global branch.autosetuprebase always

하지만  위의 명령은 이미 개발중인 브랜치에는 적용되지 않습니다. 이미 개발중인 브랜치에는 다음과 같은 명령으로 적용할 수 있습니다. (적용하려는 프로젝트 루트 디렉토리에서 수행합시다)

$ git config branch.{BRANCH-NAME}.rebase true

{BRANCH-NAME} 대신에 master와 같은 여러분이 적용하고자 하는 적절한 브랜치명을 적어주시면 됩니다.