git rebase

배찬영·2021년 6월 22일
0

git

목록 보기
2/3

git rebase란

merge와 비슷한 개념이지만 merge는 각 feature의 모든 commit과 merge commit을 시간순으로 모든 commit이 저장된다.
rebase는 기능별로 commit이 저장이 되고 merge commit은 삭제된다.
결국 branch별 commit은 1개가 된다.

merge

각 기능별 feature가 수정되면 commit을 하고 그 branch가 merge가 된다면 main에 그 commit이 추가된다.
main에 다른 featrue가 merger 되었기 때문에 다른 기능 feature branch에서 다시 pull을 한다면 그 모든 commit이 추가가 된다.
여러 branch가 있는 경우 commit이 너무 많기 때문에 관리하기가 어려워 보인다

  • 불필요한 commit 발생
  • 복잡한 commit history

rebase

각 branch에서 commit을 한다하더라도 기능별로 모아지기 때문에 복잡하지 않고 merge commit을 제거한다.

  • 복잡하지 않다.
  • 불필요한 commit 제거

$ git rebase -i main

  • main에서 pull을 하고 feature branch 이동 후 git rebase

squash

rebase한 commit을 한 개의 commit으로 병합한다는 개념이다.
그렇게 된다면 위에 사진에서 commit이 각각 4개, 2개인데 각각 1개로 병합이 된다.

  • commit 3~4개가 쌓여있다면 rebase 해주것이 베스트 (한번에 rebase하면 충돌로 많은 시간을 소비)
  • remote 저장소에 push되어 있는 commit이 있다면 새로 commit 추가 후 push 한다면 저장소에 이미 push 되어있다고 error 발생
    $ git push 해당feature -f
    force push를 한다는 명령어 입력
    remote 저장소에 commit 바뀜

rebase 중 충돌 해결

충돌이 발생하였다면
$ git add .
$ git continue
충돌난 commit의 개수 만큼 반복하면 된다.
git commit을 하는 이유는 변경사항이 없기때문에 add만 하고 rebase 진행

profile
안녕하세요

0개의 댓글