지금까지는 프로젝트를 브랜치들을 병합할 때 merge
를 사용했지만, 오늘 rebase
를 통해 병합하는 방법에 대해 배웠다.
git rebase
를 사용하면 git merge
를 사용할 때의 문제점들을 해결할 수 있다.
각각의 commit과 conflict가 발생할 수 있다. rebase를 하면 이전의 commit들까지 하나씩 비교를 하기 때문이다. 따라서 미리미리 conflict를 해결하고 하나의 commit으로 합쳐두는 것이 좋다.
rebase할 때 명령어를 git rebase -i main
라고 입력하면 squash를 사용할 수 있다.
:wq!를 통해 창을 빠져나온다.
최종적으로 rebase된 commit의 내용을 작성하기 위한 수정용 에디터가 뜬다.
현재까지 적은 commit message가 모두 나타나는데, 불필요한 내용을 제거하고 현재 수정 내역에 대한 commit message를 작성한다.
Esc -> :wq! 저장하고 에디터에서 빠져나온다.
push를 한다.
이 때, 에러메시지가 뜰 것이다.
rebase는 commit history를 관리하는 역할을 한다. 수정 사항이 생긴 후 다시 rebase하면 history가 무조건 달라지는데, git은 history가 다른 branch의 push를 허용하지 않기 때문에 에러가 발생한다.
그렇기 때문에 git push origin 브랜치명 -f
를 입력해 force push를 진행한다.