[TIL] git rebase

bmoyeon·2020년 9월 8일
0

Git & GitHub

목록 보기
4/5
post-thumbnail

프로젝트를 하면서 git rebase를 통해 어질러진 로그들을 간단히 정리할 수 있게 되었다.

rebase는 이름이 말해주듯이 브랜치의 공통조상이 되는 base를 다른 브랜치의 커밋 지점으로 바꾸는 것을 말한다.




브랜치 feature/one을 master 브랜치의 world 커밋으로 base를 옮기고 싶으면, 아래와 같이 명령어를 입력해주면 된다.

$ git checkout feature/one
$ git rebase master





그럼 이제 이 rebase를 이용하여 커밋을 깔끔하게 정리해보는 예제를 살펴보자.

프로젝트 진행 중 커밋을 여러번 쌓아 pull requests를 보내면 커밋이 여러개 있어 지저분하게 보일 수 있다.
따라서 pr 보내기 전 rebase 함으로써 커밋 이력이 하나만 있게 보낼 수 있다.

위 사진처럼 브랜치 feature/one은 커밋이 여러개 있다.
rebase해서 커밋 하나로 정리해보자.

$ git checkout feature/one

#i는 rebase를 대화형으로 진행하겠다는 옵션이다.
$ git rebase -i master

  • pick
    커밋을 사용하겠다
  • squash
    해당 커밋을 이전 커밋과 합친다


맨 위 커밋만 pick하고 나머진 squash 한다면 커밋 하나만 남겨지게 된다.


커밋메시지 하나만 남겨두고 :wq하면 rebase가 완료된다.

💡 rebase 도중 conflict가 났다면 충돌을 해결한 후, 계속 진행하면 된다.

$ git add .
$ git rebase --continue

$ git log --oneline --all --graph


👉 커밋메시지를 rebase로 수정한 커밋 하나만 남겨져 있는 걸 확인할 수 있다.

profile
꾸준히 나아가자!

0개의 댓글