git flow : rebase

hyeonze·2022년 1월 12일
0

실무에서의 git branch 5개


1. Main : 실제 프로덕션
2. Develop : 개발자용
3. Feature/F1, Feature/F2, ... : 작업별 브랜치
4. Release : Main과 Develop 사이
5. Hotfix : 급하게 수정해야할 때 사용

rebase 하는 이유

merge를 통해 합병할 경우 각 브랜치에 push한 시점까지 모두 적용됨. 백업해야 하거나 디버깅해야 할 경우 시점을 선택하기에 어려운 경우가 발생(history가 복잡). rebase를 통해 여러개의 commit을 통합(squash)할 수 있고, 관리가 편해짐.

How to

  1. main branch에서 remote main을 pull받기
  2. 작업할 branch로 와서 git rebase -i main하면 커밋들을 볼 수 있는 vi가 뜸
  3. 최상단의 pick은 두고, 다른 pick은 s(squash)로 바꾸기(커밋 내역이 없어지진 않음)
  4. escape > :wq! > return 하면 커밋메시지들이 담긴 vi가 뜸
  5. 불필요한 커밋메시지 제거 후 하나의 커밋메시지로 정리 후 escape > :wq! > return(# 뒤에 나오는 내용은 주석이니 그대로 두고 커밋 메시지 작성에 집중)
  6. (git log로 정리된 커밋 확인 후) git push origin feature/login -f(rebase는 commit history를 정리하는데, 같은 브랜치에서 rebase하면 history가 달라짐. git이 history가 다른 branch의 push를 허용하지 않기 때문에 force옵션 추가.)

rebase중 충돌 해결


1. 충돌 난 경우 터미널 또는 vscode 좌측하단에서 rebase ~ 1/6과 같이 rebase가 진행중임을 알려줌.
2. 충돌된 코드를 수정 후 git add .
3. 수정사항이 없으므로 git commit생략
4. git rebase --continue
5. 멈춰있던 rebase가 진행됨(충돌 재발 시 2~4번 반복)
6. 계속 해결이 안된다면 git rebase --abort로 rebase 전 상황으로 롤백

profile
Advanced thinking should be put into advanced code.

0개의 댓글