# git rebase

우아한테크코스 프리코스 진행 중 소스 코드가 수정되어 upstream에서 소스코드를 받아 병합해야 하는 상황이 생겼다.

rebase는 말 그대로 베이스를 재배치하는 것이다. 새롭게 베이스를 다시 정의함으로써 깔끔한 커밋 히스토리를 정리할 수 있다.

upstream repository에서 fork를 받아 remote repository에서 localclone했다고 가정한다.

$ git remote -v
origin  https://github.com/hyeonic/java-racingcar-precourse.git (fetch)
origin  https://github.com/hyeonic/java-racingcar-precourse.git (push)
upstream        https://github.com/woowacourse/java-racingcar-precourse.git (fetch)
upstream        https://github.com/woowacourse/java-racingcar-precourse.git (push)

# 1. 등록된 upstream repository에서 최신 소스코드를 받아온다.

$ git fetch upstream
$ git rebase upstream/main

위 같이 git 명령어를 실행하면 커밋 히스토리가 새롭게 재배치되어 소스코드가 병합된다.

# 2. remote repository에 push

잘 정돈된 브랜치를 push한다. 하지만 remote repository와 서로 다른 커밋 히스토리를 가지고 있기 때문에 -f를 활용하여 강제로 반영한다.

$ git push origin hyeonic -f
#git #rebase
last updated: 12/4/2021, 12:25:31 AM