Git Rebase 진행 순서

안정현·2021년 5월 29일
0

Git Flow & Git Rebase

목록 보기
2/2

✅ (1) 새로운 작업을 모두 마치고 push 하기 전에

  • Main branch로 이동(git checkout main)
    • git pull origin main
    • git log : 변경된 log 기록 확인
  • 내가 push 할 feature branch 로 이동(git checkout feature/nav)
    • git log : main branch 에 변경된 사항이 아직 feature branch 에 없음을 확인
  • git rebase -i main 진행
  • 에디터 창(ex. vim) 활성화

✅ (2) rebase 하는 동안 squash 진행할 때에는

  • 가장 오래된 commit을 pick 함
  • 다른 commit message 는 가장 오래된 commit을 기준으로 squash 함
  • 다른 commit 의 작업 내역이 없어지는 것이 아님
  • esc -> :wq 로 저장하고 에디터 창에서 빠져나오기

✅ (3) 수정용 에디터가 하나 더 나타남

  • 최종적으로 이 rebase된 커밋의 내용을 작성하는 부분
  • 현재까지 작성한 commit message가 전부 나타남
  • 불필요한 내용을 제거하고 현재 수정 내역에 대한 commit message 를 구체적(multi-line commit 형태)으로 작성
    • multi-line commit : title(요약) + body(상세 내용)
  • esc -> :wq 로 저장하고 에디터 창에서 빠져나오기

✅ (4) successfully rebased!

  • 성공했다면 git log로 깔끔해진 commit message 확인
  • remote main 으로 push 진행 (git push origin feature/nav)

✅ (5) rebase 후, push 하기

  • rebase는 commit history 를 정리하는 역할
    • 같은 브랜치에서 rebase를 할 때마다 history가 달라질 수 있음
  • 수정 사항이 추가로 생긴 후, 다시 rebase 하면 history 가 무조건 달라짐
    • git은 history가 다른 branch의 push를 허용하지 않음
  • git push origin feature/nav -f -f 옵션을 사용하여 force push 를 진행

✅ (6) rebase 중 conflict 해결하기

  • 충돌이 발생한 경우 rebase가 진행되지도, 끝나지도 않고 도중에 멈춰 있음
    • 터미널이 (rebase ~ 1/6) 과 같은 메세지로 rebase가 진행중임을 알려줌
  • 충돌은 충돌일 뿐, 해당하는 코드를 수정 후
    • git add .
    • git commit 은 하지 않음. 수정 사항이 없으므로
  • git rebase --continue 를 진행
    • 멈춰 있던 rebase 가 진행됨
    • 충돌이 여러번 나면 그 때마다 충돌을 해결하고 git add . / git rebase --continue 를 반복함
  • 계속 해결이 안된다면, git rebase --abort 로 아예 rebase를 진행하기 전 상황으로 돌아갈 수도 있음

< 참고 : Git 명령어 >

  • Git reset soft vs hard
  • Git log
  • Git reflog
  • Git checkout <commit>
  • Git stash & git stash apply & git stash clear

<출처> wecode(코딩 부트캠프) 세션

0개의 댓글