inblog logo
|
[HootJem] 개발 기록 블로그
    git

    [Git] 브랜치 병합 전략 : Rebase

    Rebase는 커밋 이력을 다시 정렬하여, 브랜치가 분기되지 않은 것처럼 히스토리를 깔끔하게 유지할 수 있습니다.
    HootJem's avatar
    HootJem
    Aug 27, 2024
    [Git] 브랜치 병합 전략 : Rebase
    Contents
    Rebase란?예제Git rebase 의 장점

    Rebase란?

    3-way merge 예
    3-way merge 예
    Merge는 두 브랜치의 공통 조상에서부터 현재까지의 차이를 3-way로 병합한다. 이런경우 두 브랜치에서 동일한 파일을 수정했다면 충돌이 발생할 수 있습니다.
    rebase 후 상태
    rebase 후 상태
     
    이럴 때 Rebase를 사용하면, 커밋들을 다시 정렬하여 Fast-forward merge를 수행할 수 있게 됩니다. 이렇게 하면 커밋 이력이 깔끔해지고, 마치 브랜치가 분기되지 않고 직선으로 이어진 것처럼 보이게 됩니다.

    예제

    1. master 브랜치에서 a, b 각각 커밋하기

    a 파일 생성 후 add , b 파일 생성 후 add 해야합니다.
    GGG@DESKTOP-43CC23G MINGW64 /c/metacoding/gitwork/ex05 (master) $ git init # a 파일 생성 $ git add . $ git commit -m "a" # b 파일 생성 $ git add . $ git commit -m "b"
     

    2. topic 브랜치에서 c 커밋

    작업 하고있는 브랜치가 topic 이 맞는지 확인후
    GGG@DESKTOP-43CC23G MINGW64 /c/metacoding/gitwork/ex05 (master) $ git checkout -b topic # 브랜치를 생성하고 그 브랜치로 전환 # c 파일 생성 하고 작업합니다. GGG@DESKTOP-43CC23G MINGW64 /c/metacoding/gitwork/ex05 (topic) $ git add . $ git commit -m "c"

    3. master 브랜치에서 d 커밋

    master 브랜치로 이동 하여 작업 브랜치 확인을 해야합니다.
    GGG@DESKTOP-43CC23G MINGW64 /c/metacoding/gitwork/ex05 (topic) $ git checkout master Switched to branch 'master' # d 파일 생성 하고 작업합니다. GGG@DESKTOP-43CC23G MINGW64 /c/metacoding/gitwork/ex05 (master) $ git add . $ git commit -m "d"
     
    여기까지 작업하면 이러한 형상을 갖게됩니다.
    notion image
    이대로 작업하면 3-way 머지가 되지만 이번 포스트에서는 Rebase 를 사용할 것입니다.

    4. Rebase 수행

    topic 브랜치를 master 뒤로 재정렬하려면 아래와 같이 브랜치 이동하고, 만약 master를 뒤에 둘것이면 master 로 이동해야합니다.
    $ git checkout topic Switched to branch 'topic' GGG@DESKTOP-43CC23G MINGW64 /c/metacoding/gitwork/ex05 (topic) $ git rebase master
     

    5. log 확인

    Rebase가 성공적으로 완료되면 커밋 이력은 Fast-forward merge 형태로 정리됩니다.
    $ git log
    notion image
    notion image
     

    Git rebase 의 장점

    • 커밋 이력이 깔끔해짐: Rebase는 커밋 이력을 다시 정렬하여, 브랜치가 분기되지 않은 것처럼 히스토리를 깔끔하게 유지할 수 있습니다.
     

    📌주의사항

    • 공유된 브랜치에서는 사용하지 말 것: Rebase는 커밋 이력을 재작성하므로. 로컬에서만 사용할 것을 권장합니다.
     
    Share article
    Contents
    Rebase란?예제Git rebase 의 장점

    [HootJem] 개발 기록 블로그

    RSS·Powered by Inblog