[Git] git rebase에 대해 알아보자-!

Hyodduru ·2022년 4월 17일
2

CS & Etc.

목록 보기
8/12
post-thumbnail

merge & rebase

두 커맨드들은 브랜치의 변경사항을 다른 브랜치에 합치기 위해 만들어졌다. (But 다른 방식)

git merge

✔️Merge : main branch에서 commit한 순서들 feature에 merge할 때 그 시간 그대로 commit 저장된다. (History 그대로 update된다)
Main 에 다시 feature 거를 merge해도 마찬가지

✔️ 문제점 : 불필요한 merge commit 생성 , 복잡한 프로젝트 history (다른 작업과 그 내역이 겹쳐 구분하기 어려워진다)

git rebase

✔️Git rebase : 불필요한 merge commit 없음!
같은 작업을 진행한 commit끼리 모아준다. (깔끔한 history)

✔️ 내 commit의 base를 변경하여 commit history 를 일렬로 잘정리해준다.

  • ✔️ rebase는 base를 새로 설정하고, 기존의 커밋들을 base위에 하나씩 작성해준다.
    ✔️ conflict는 commit과 commit 사이에 일어나는 작업 내용 사이의 충돌이므로, 세개의 커밋을 새롭게 써야할 경우 세개의 커밋에서 모두 conflict가 발생할 가능성이 있다. (두세개 커밋 쌓였을 때 중간중간 한번씩 rebase 해주는게 좋다-!)

✔️ Squash - commit들을 하나의 commit으로 합친다.
Ex) 리뷰반영, 리뷰반영 2. …
=> 메세지 깔끔하게 한번에 정리 가능하다!

✔️ 문제점 : rebase를 하고 나면 commit 의 아이디가 바뀐다.

git rebase 하는 순서

새로운 작업을 모두 마치고 push 하기 전에는

  1. Main branch 로 이동하여 remote main을 pull 받는다.
  2. 내가 push할 feature branch로 이동한다
  3. git rebase -i main를 진행한다.

rebase 하는 동안 squash를 진행할 때에는

  1. 가장 오래된 commit 을 pick한다
  2. 다른 커밋 메세지는 가장 오래된 commit을 기준으로 squash한다.
  3. 다른 커밋의 작업 내역이 없어지는 것은 아니다.
  4. Esc -> :wq 로 창에서 빠져나온다.

수정용 에디터가 하나 더 나타난다.

  1. 최종적으로 이 rebase된 커밋의 내용을 작성하는 부분
  2. 현재까지 적은 커밋 메세지가 전부 나타난다.
  3. 불필요한 내용을 제거하고 현재 수정 내역에 대한 커밋 메세지 작성한다.
  4. Esc => wq! 저장하고 에디터에서 빠져나온다.

Successfully rebased

  1. 성공했다면 git log로 커밋 메세지 다시 확인해주기!

  2. Push 한다.

Rebase 후 push하기

git push origin feature/login -f

profile
꾸준히 성장하기🦋 https://hyodduru.tistory.com/ 로 블로그 옮겼습니다

0개의 댓글