TIL - 21 - Rebase

park_kyo_su·2021년 7월 21일
0

💻

목록 보기
2/5
post-thumbnail

지금까지 git merge 명령어를 사용했지만 2차 프로젝트부터는 git rebase로 대체할 것이다.

Rebase

  • 머지커밋이 남지 않고 linear한 이력관리가 가능해진다 = 불필요한 커밋을 하나로 squash (정상적인 경우 PR / 브랜치 당 커밋이 하나여야 한다)

명령어

  • git rebase -i main : 명령어를 통해 중간 중간 브랜치에 쌓인 커밋을 하나로 정리
  • 해당 브랜치의 base commit을 확인하는 방법 : git merge-base main feature/sign-in (필수 아님)

커밋 합치기

  1. 작업브랜치에서 git rebase -i master
  2. pick => squash로 커밋 합치기
  3. [Add]메세지 정리

rebase Conflict 해결

  • rebase 도중 충돌이 일어날 경우 마치 코드가 날아간 것 처럼 보일 수 있다. 코드가 사라진 것이 아니라 코드를 합치던 도중 중단된 것이다. 충돌을 해결하고 남은 과정을 끝까지 진행하면 모든 코드가 다 들어와 있게 된다. 혹 잘못 리베이스를 했다면, git rebase —-abort (리베이스 도중) 혹은 git reflog 로 돌아갈 지점을 찾은 후 git reset --hard 돌아갈지점 (리베이스 완료 후) 명령어로 복구할 수 있다.
  1. master 브랜치로 checkout
  2. git pull
  3. 작업 브랜치로 checkout
  4. git rebase -i master
  5. conflict 발생/ conflict 해결
  6. git add .
  7. git rebase --continue

포스푸쉬 (불가피하게 추가 수정하여 push를 다시 할 경우)

이미 올라간 commit이 있기 때문에 push가 불가능하다고 나온다.
그럴때는 이미 작업자가 앞에 commit 내용을 알고 있으므로 force push를 진행한다.

  1. 작업한 파일 커밋 합친 후
  2. git push origin featre -f
  3. squash
profile
이사중 ! https://dpark-log.tistory.com/14

0개의 댓글