Rebase

miin·2021년 10월 19일
0

Git

목록 보기
2/3
post-thumbnail

정의

  • 말 그대로 re-base로 베이스를 재배치한다는 뜻 이다.
  • merge를 사용하면 히스토리를 볼 때 뿌리가 여러개로 나눠져 있어서 히스토리를 찾아갈 때 보기가 어렵다.
    베이스를 다시 정의함으로써 새롭게 커밋라인을 정리하여 히스토리를 깔끔하게 볼 수 있게 해준다.

Merge와 Rebase의 차이점

  • git에서 한 브랜치와 다른 브랜치를 합치는 방법은 merge와 rebase이다.
  • merge와 rebase의 실행결과는 같지만 커밋 히스토리가 달라진다.
  • merge는 쉽고 안전하지만 커밋히스토리가 지저분할 수 있다. 반면 rebase는 까다롭지만 커밋히스토리를 깔끔하게 관리할 수 있다.

사용하기

git init main 브랜치 생성

스쿼시

잘못하면 리셋하기
rebase를 하면서 동시에 squash를 사용해 커밋을 하나로 정리
-> 스쿼시까지 하면 전의 커밋이 사라지고 하나의 커밋으로 합쳐짐
git rebase -i main 명령어를 통해 중간 중간 브랜치에 쌓인 커밋을 하나로 정리

  • 커밋이 세개정도 쌓이면 바로 스쿼시 하기
  • 브랜치당 커밋은 하나여야 함

잘못 리베이스 했을 경우

git rebase --abort(리베이스 도중)
또는 git reflog로 돌아갈 지점을 찾은 후 git reset --hard 돌아갈지점 (리베이스 완료 후)로 복구

  • feature branch에서 git rebase -i main
    가장 오래된 커밋 => pick, 나머지 => s (squash) 바꾼 후 esc :wq
    커밋 메시지 작성 -> esc :wq
  1. 작업하던 브랜치에서 add -> commit 후
  2. 마스터/메인 브랜치로 이동 git checkout main/master -> git pull origin main
  3. 다시 작업하던 브랜치로 돌아가기 git checkout branch-name
  4. git rebase -i main
  5. 충돌 수정
    -> package.json 추가생기면 npm install
  6. git add . -> commit
  7. git rebase --continue -> esc-> :wq
    (안넘어가면 add->commit 다시하고 continue)
  8. git push origin branch-name -> 안되면 11-1
    8-1. git push origin branch-name -f (force push는 주의해서 사용하기)

0개의 댓글