TIL 023 | git rebase
rebase ?
Git에서 한 브랜치에서 다른 브랜치로 병합하는 방법은 Merge이고, 다른 하나는 Rebase다.
experiment(c4)와 master(c3)을 합치는 가장 쉬운 방법은 git merge master이다. 두 브랜치의 마지막 커밋(c3, c4)와 공통 조상(c2)을 사용하는 3-way Merge로 새로운 커밋을 만들어 낸다.
c3에서 변경된 사항을 Patch로 만들고 이를 c4에 적용시키는 방식을 rebase라고 한다. 이 명령으로 한 브랜치에서 변경된 사항을 다른 브랜치에 적용할 수 있다.
즉, 다른 base tip 위에 커밋을 재 적용하는 것이다.
또, 여러개의 커밋을 하나로 합쳐 줄 수 있다.
작업을 하다보면 다른 브랜치로 이동해야 할 일이 생길때가 있는데, 잠시 임시 저장 용도로 commit을 하게된다. 그대로 push하게 되면 커밋로그가 너무 지저분하므로 이 커밋들을 하나로 깔끔하게 합칠때도 git rebase를 사용한다.
USE : commit history 하나로 합치는 방법
- feature branch에서 다음 명령어를 사용한다.
git rebase -i main
-i
옵션을 추가하면 대화형 모드로 rebase할 수 있다.
main을 기준으로 rebase 한다. 혹은 합치려는 n개의 커밋 이전으로 rebase한다.
-
가장 오래된 커밋(first commit)을 pick으로 두고 나머지는 s(squash)한다.
-
커밋 메시지를 정리한다.
-
커밋 로그 확인 후 잘 합쳐졌다면 브랜치에 push하거나, 다음 작업을 이어간다.
4-1. 이미 이전에 원격 저장소에 push한 적이 있으면 -f로 force push한다.(내 커밋 내용으로 덮어씌우는 위험부담이 따르므로 신중히 사용해야 한다.)
여러개의 커밋을 한번에 rebase를 하는것은 위험부담이 따르므로 되도록이면 커밋 로그가 3-4개 쌓여있을 때 rebase를 해주는것이 정신 건강에 좋다.
USE : main 브랜치와 병합하기
- main 브랜치에서 원격 저장소 main에 merge된 내용을 pull 받는다.
git pull origin main
- main과 병합 할 브랜치로 이동후 다음 명령어를 사용한다.
git rebase -i main
- conflict가 났다면 수정 후 다음 명령어를 사용한다.
git add .
git rebase --continue
- 커밋 로그 확인 후 잘 합쳐졌다면 브랜치에 push하거나, 다음 작업을 이어간다.
4-1. 이미 이전에 원격 저장소에 push한 적이 있으면 -f로 force push한다.(내 커밋 내용으로 덮어씌우는 위험부담이 따르므로 신중히 사용해야 한다.)
Author And Source
이 문제에 관하여(TIL 023 | git rebase), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@thisisemptyyy/TIL-023-git-rebase저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)