TIL93. git flow & rebase

Jaeyeon·2021년 4월 27일
0

세션진행: 승현님

git flow와 rebase란?

develop 브랜치 - 우리가 지금까지 썼던 메인 브랜치 같은 역할 (master or main)

release 브랜치 - 배포를 하기 위한 브랜치 (버그를 찾아 commit)
버그를 찾아서 해결 할 때 마다 develop브랜치에 PR하기

다 버그를 찾았으면 Main브랜치로 이동해서 진짜 배포

배포를 하고 난 후 서버에 오류가 났다면??
일단 main 브랜치에서 또다른 브랜치(hot fix)를 파서 수정 후 바로 다시 배포

rebase란?
다시 베이스를 지정한다.
기준이 되는 마지막 커밋의 베이스를 바꿔버린다.

지금까지는 두 브랜치를 병합 할 때 머지를 사용,
하지만 머지를 할 때 마다 머지 커밋 메시지를 남겨야함 (불필요한 머지 커밋 생성)

git rebase

  • 불필요한 머지 커밋 제거 ( 애초에 생기지를 않음 )
  • 같은 작업을 진행한 commit들끼리 모으기

리베이스는 커밋이 한꺼번에 충돌 날 가능성이 있다.

커밋 하나로 합치기 (squash)

리베이스는 merge를 대체한다.

  1. 리모트 메인 pull 받기 (git pull origin main)

  2. 내가 push할 작업 브랜치로 이동 (checkout)

  3. git rebase -i main을 진행 ( 메인의 마지막 커밋을 내 베이스로 하겠다 )

  4. 아래와 같은 에디터가 나온다.

  5. 커밋이 순서대로 나오고 pick이 쫙 나온다 (지금까지 커밋내역)

  6. 제일 위 커밋은 그대로 pick 두고

  7. 밑에 꺼는 pick 대신 s로 바꾸기

  8. esc 후 :wq로 나가기

  9. 또다른 에디터가 나온다. (최종메시지 작성)

  10. esc 후 :wq로 나가기

  11. 커밋은 2~3개를 맥시멈으로 해야 컨플릭트 해결하기 좋다. 그 후 리베이스 하기!!

  12. 리베이스 후 푸시를 할 때는 히스토리가 무조건 달라지기 때문에 포스 푸시하기!

리베이스는 꼭 꼭 푸시 전에 하기!


리베이스 중 충돌 해결하기

  1. 컨플릭트 해결하기 (코드가 없어져도 당황하지 말기)
  2. git add . 하기 커밋을 할 필요 없음
  3. git rebase --continue를 진행한다.
  4. 충돌이 여러번 나면 그때마다 충돌을 해결하고 git add . / git rebase --continue 반복
  5. 계속 해결이 안된다면, git rebase --abort로 아예 rebase를 진행하기 전 상황으로 돌아 갈 수 있다.

git 명령어

git reset soft : 변경된 것을 스테이징 안된 상태로 커밋시점으로 돌아가기
git reflog : 깃 레퍼런스 로그를 확인할 수 있음.

profile
생각하는 개발자 되기

0개의 댓글