머지(병합)은 두 개 이상의 개발 히스토리를 하나로 합치는 작업을 뜻함.
리베이스는 특정 브랜치의 베이스를 재설정하여 다시 커밋을 적용시켜 커밋 이력을 재정렬하는 작업을 의미한다.
보통 git-flow 작업에 알맞음. fork해온 프로젝트를 upstream에 맞게 동기화하고자 할 때 주로 사용하는 명령어.
main/master 브랜치에서 리베이스를 실행하게 되면 main/master의 커밋 이력이 변하기 때문에 main/master 브랜치에서 다른 브랜치를 기준으로 리베이스를 실행하는 경우는 지양하는 게 좋음.
#feature 브랜치에서 실행 git pull -rebase origin master
git rebase -i
: 리베이스를 실행하기 전 내가 작업 중인 브랜치의 커밋 히스토리를 수정할 수 있게 해주는 명령어pick
: 해당 commit 그대로 유지
reword
: 해당 commit의 message 변경
squash
: 이전 커밋과 합쳐서 커밋을 하도록 실행
등등 여러가지 명령어는 편집기 실행 시 설명이 되어있음.
-> squash
를 실행시키고자 할 때에는 가장 오래된 commit 에 pick
혹은 p
를 입력해주고, 합치고자 하는 나머지 commit에는 squash
혹은 s
를 입력해준다.
ESC
> :wq
로 편집기 창을 종료한다.git push origin branch -f
로 -f
옵션을 사용하여 force push를 진행한다.git add .
git rebase --continue
를 입력해서 멈춘 rebase 작업을 마저 진행시켜준다.git rebase --abort
를 사용하여 아예 rebase를 진행하기 전 상황으로 돌아갈 수도 있다.