본문 바로가기

개발👩‍💻/git

git: rebase 심화 (rebase --onto: branch 부모의 부모에 대한 rebase)

728x90

branch가 한 줄기만 있다면

# feature branch에서
$ git rebase <main branch>

위 명령어만 적으면 rebase할 수 있다.

 

그렇다면 해당 브랜치의 부모브랜치의 부모브랜치, 즉 1번의 브랜치를 거쳐 rebase는 어떻게 할까?

위 그림과 같은 상황에서 client를 main 브랜치로 rebase를 해야한다고 하면,

아래 그림과 같이 client만 main 브랜치 커밋들 옆에 붙어야 한다.

이렇게 하기위해선

$ git rebase --onto main server
# rebase --onto <main branch> <middle branch>

위 명령어를 통해서 rebase할 수 있다.

그 후 main branch와 client branch를 fast-forward로 merge하면 된다.

 

 

마지막 server도 main branch로 rebase하고 싶다면

$ git rebase main server
# server를 main branch로 rebase

위와 같은 명령어로 server도 rebase할 수 있다.

server도 rebase한 후 merge를 하면 아래와 같이 선형의 history를 갖게 된다.

반응형