[Git] git rebase

김효식 (HS KIM)·2020년 8월 9일
0

wecode

목록 보기
26/35

여태까지 masterbranch사이에 update된 사항이 있으면 변경 사항을 맞춰주기 위해 각각의 branch로 이동해서 master의 내용을 merge해줬는데, merge가 아닌 rebase라는 기존과 다른 방식을 사용해서도 같은 기능을 수행할 수 있다.
rebase를 처음 사용하면서 혼돈의 시간을 보냈고, 실제로 GitHub에 있는 master에서 파일이 삭제되는 불상사가 발생하기도 했다... 그래도 감당할 수 있는 수준의 작업이여서, 이런 일을 차라리 미리 경험해봐서 다행이기도 했다.

😢 때로는 코딩하는 것보다 어려운 깃 사용법...


위 그림을 보면 mergeFeature의 내용이 계속 유지가 되면서 Master의 내용 중 변경된 것이 Featureupdate되고, rebase는 기존의 Featureupdate되는 것이 아니라 변경된 Master를 기준으로, 새로운 Feature브랜치를 만든다. 말 그대로 branch가 base로 하고 있는 master를 다시 설정한 것이다. base를 바꾸게 되면 당연히 변경된 master의 내용은 알아서 반영이 된다.

그래서 rebasemerge보다 좋은점이 뭐가 있을까?🤔
merge를 사용하면 base가 되는 master가 여러 곳이기 때문에, 나중에 history를 볼 때 찾아가기가 힘들 수도 있다. 하지만, rebase를 사용하면 base가 되는 master가 한 곳이기 때문에 history를 깔끔하게 정리할 수 있다.

git merge

  • commithistory를 모두 기록하기 때문에, 나중에 commit이 굉장히 많이 쌓이게 된다.

git rebase

  • commit내역을 하나로 합쳐주기 때문에, commit내역이 복잡해지지 않는다.

git rebase하는 순서

  1. feature/branch | git commit -m
  2. feature/branch | git checkout master
  3. master | git pull origin master
  4. master | git checkout branchName
  5. feature/branch | git rebase -i master -> commit message하나로 통합
  6. feature/branch | git push origin feature/branchName

git rebase 관련 명령어

  • git rebase --continue: masterconflict 발생시 해결
  • git rebase --abort: git rebase중지
profile
자기개발 :)

0개의 댓글