[TIL] git workflow와 git rebase

minami·2022년 1월 19일
0

wecode

목록 보기
7/10

1. git flow

기본적인 git flow

2. git rebase

1. git merge를 하는 경우

  • Feature/sign-in에서 Main으로 git merge하는 경우

merge를 할 때마다 모든 commit이 그대로 옮겨진다

2. git rebase를 하는 경우

  • 불필요한 merge commit 제거
  • 같은 작업을 진행한 commit끼리 모으기

  • Feature/sign-in의 시작이 Main 브랜치의 마지막 커밋부터 시작된다

3. squash

3. git rebase 사용법

  • 새로운 작업을 모두 마치고 push하기 전
    1. 메인 브랜치로 이동하여 remote 메인 브랜치를 pull
    2. 내가 push할 feature 브랜치로 이동
    3. git rebase -i master(main)
  • rebase를 하는 동안 squash 진행할 때
    1. 가장 오래된 commit을 pick
    2. 다른 커밋 메시지는 가장 오래된 commit 기준 squash
    3. Esc:wq로 창 빠져나오기
  • 수정용 에디터가 하나 더 나타났을 때
    1. 최종적으로 rebase된 커밋의 내용 작성
    2. 현재까지 적은 커밋 메시지가 전부 나타난다
    3. 불필요한 내용 제거 후 현재 수정 내역에 대한 커밋 메시지 작성
    4. Esc:wq로 창 빠져나오기
  • 성공했을 때
    1. git log로 깔끔해진 커밋 메시지 확인
    2. push
  • rebase 후 push 할 때
    1. rebase는 commit history를 정리하는 역할인데 같은 브랜치에서 rebase를 할 때마다 달라진 commit history 때문에 push가 되지 않음
    2. git push origin feature/이름 -f로 force push 진행
  • rebase 충돌 해결 방법
    1. 충돌이 일어나면 rebase 도중 멈춘다.
    2. 터미널에서 (reabse ~ 1/6)처럼 메시지로 rebase 진행중임으로 표시
    3. 충돌이 발생한 코드를 수정
    4. git add . (commit은 하지 않음)
    5. git rebase --continue
    6. 충돌이 여러 번 발생할 때 3~5번 반복
    7. 계속 해결이 안 되는 경우 git rebase --abort로 rebase 진행 전 상황으로 돌아가기
profile
함께 나아가는 개발자💪

0개의 댓글