rebase
rebase는 merge와 함께 다른 브랜치로 합칠 때 사용됩니다.
rebase는 말 그대로 base를 변경하는 것입니다.
main 브랜치인 C1에서 bugFix 브랜치를 분기했습니다.
bugFix의 base는 C1이 됩니다.
base란 현재 브랜치(bugFix)가 다른 브랜치 위로 이동되기 전의 공통 조상을 의미합니다.
즉, bugFix와 main의 공통 조상은 C1이 되는겁니다.
이제 `git rebase main`을 질의하면,
bugFix의 커밋들을 main의 마지막 커밋으로부터 재적용하는 작업입니다.
이 과정에서 base가 변경됩니다. bugFix의 base가 C1에서 C7로 변경됩니다.
반대로 이번에는 main 브랜치에서 `git rebase bugFix`를 해보겠습니다.
main와 bugFix의 base는 공통적으로 C1입니다.
이 때, main에서 `git rebase bugFix`를 하면 main의 마지막 커밋들을 bugFix의 마지막 커밋으로 부터 재적용합니다.
이 과정에서 main의 base가 bugFix의 마지막 커밋은 C4로 변경됩니다.
참고로 editor는 https://learngitbranching.js.org/?locale=ko 를 사용했는데 굉장히 유용하네요.
history가 그래프로 그려져서 공부할 때 많은 도움이 됩니다.
여러분도 git을 공부할 때 활용해봐요:)
이번에는 브랜치가 세개일 때 rebase를 해볼까요.
위에서 아래로 바뀌었는데요. 어떤 명령어를 입력했을 까요.
정답은 `git rebase bugFix1`입니다.
왜인지 이해하셨나요? bugFix2에서 git rebase bugFix1을 하면 bugFix1의 마지막 커밋으로 base가 변경됩니다.
이번에는 main 브랜치로 base를 변경해볼까요.
전 여기에서 질문에 하나 생겼습니다. 그럼 main 브랜치는 지워진걸까요?
git merge bugFix
'TIL(Today I Learned)' 카테고리의 다른 글
WebSocket (0) | 2024.07.30 |
---|---|
[JS]전역객체와 Node객체 (0) | 2023.03.19 |
React에서 함수형 컴포넌트를 장려하는 이유 (0) | 2023.03.15 |
[예외 처리3]new Error() vs new Promise.reject() (0) | 2023.03.11 |
[예외발생2]Error() vs new Error() (0) | 2023.03.11 |