[Git] 1. 여러 브랜치를 리베이스(rebase)하기

do_large·2021년 3월 12일
0

Git

목록 보기
3/4
post-thumbnail

이 사이트의 문제를 풀었는데, 정리해볼겸 블로그에 적어보고자 한다.

문제설명

음, 여기 꽤 여러개의 브랜치가 있습니다! 이 브랜치들의 모든 작업내역을 main 브랜치에 리베이스 해볼까요?

윗선에서 일을 복잡하게 만드네요 -- 그 분들이 이 모든 커밋들을 순서에 맞게 정렬하라고 합니다. 그럼 결국 우리의 최종 목표 트리는 제일 아래에 C7' 커밋, 그 위에 C6' 커밋, 또 그 위에 순서대로 보여합니다.

before:

after:

before를 after로 만들어야 한다.

이 문제에서는 rebase를 사용해서 풀어야하기때문에 cherry-pick은 사용할 수 없다.

git rebase A B

위의 명령을 해석해 보면 A와 B 브랜치의 공통 조상 커밋부터 B 브랜치까지의 모든 커밋의 base를 A 브랜치의 위치로 바꾸라는 것이다.

커밋의 베이스를 다시 정하는 명령으로 이해하면 좋을것 같다.


그럼 실제로 어떤식으로 명령을 할 수 있냐면

  1. git rebase main bugFix
    이 명령을 하게되면

    이렇게 bugFix와 main의 공통 조상 커밋인 c1이후부터의 bugFix브랜치의 모든 커밋이 main을 base로 하게 되는것이다.

  2. 그럼
    git rebase bugFix side
    를 실행하게 되면

이렇게 된다.

bugFix와 side의 공통의 조상이었던 C0이후부터 side 브랜치의 모든 커밋을 bugFix를 base로 하게 변경한 것이다.

  1. git rebase side another
    그리고 이 코드를 실행하면 side 브랜치와 another 브랜치의 공통 조상인 C5 이후의 another 브랜치의 커밋을 side 아래로 가져오게 된다.

  2. git rebase another main

이 명령을 실행하면 main브랜치의 base를 another로 설정하게 되므로 main과 another브랜치는 같은 커밋을 가리키게 되는것이다!

0개의 댓글