1. git rebase란 ?
말 그대로 브랜치의 기반(base)을 변경하는 작업이다.
브랜치를 병합하는 방법으로는 merge와 rebase가 있는데, 두 방법의 차이는 다음과 같다.
- merge : 병합 기록을 남기면서 작업 (머지 커밋이 남음)
- rebase : 해당 베이스를 가지고 브랜치를 재정렬 (커밋 기록을 남기지 않음)
깃 브랜치의 모양이 상당히 많이 차이나는 것을 볼 수 있다.
따라서 기록이 불필요한 병합의 경우에는 rebase를 사용하는 것이 적절하다.
2. git base 사용법
dev를 기준으로 rebase한다고 가정하겠다.
1) git checkout dev
1-1) 이 때 에러가 발생한다면?
수정사항을 저장하지 않아서 그렇다. 다음 두 가지 방법 중 한 가지를 사용한다.
- git add . → git commit -m "메세지"
- git stash → 병합 후 → git stash pop
2) git pull origin dev
3) git checkout [작업하던 브랜치명]
사진 상으로 뭔가 오류가 생겼지만 일단 넘어간다.
4) git rebase dev
4-1) 이 때 오류가 생긴다면?
rebase의 근원 브랜치와 병합하면서 충돌이 생긴것이니 충돌을 해소해준다.
4-2) 충돌 해소 후 git rebase --continue 를 입력하면 정상적으로 실행된다.
3. git rebase 사용 시 주의 사항
- 공개 브랜치에서의 사용 주의: 이미 원격 저장소에 push되어 다른 개발자들과 공유된 브랜치에서는 rebase를 사용하지 않는 것이 좋다.
- 충돌 해결의 복잡성: rebase 과정에서 충돌이 발생할 수 있으며, 여러 커밋에 걸쳐 반복적으로 충돌을 해결해야 할 수 있다.
- 히스토리 변경: rebase는 커밋 히스토리를 변경하므로, 원래의 작업 순서와 시간이 달라질 수 있다.