Git Rebase

j·2022년 5월 14일
0

TIL

목록 보기
8/14
post-thumbnail

브랜치마다 커밋을 맥시멈 두세개만들고 바로 리베이스 진행
그리고 또 작업해서 커밋 두세개 쌓이면 다시 바로 리베이스(베이스 바꿀 지점 없어도!) 무한반복해서 작업하는걸 추천

해당 브랜치의 base commit 을 확인하는 방법:
git merge-base main feature/~~~
(필수아님)

how to

1. 새로운 작업을 모두 마치고 Push 하기 전에는

  1. Main branch로 이동하여 remote main을 Pull 받는다
  2. 내가 push 할 Fearture branch로 이동한다
  3. git rebase -i main 를 진행

2. Rebase 를 하는 동안 squash 진행할때

  1. 가장 오래된 commit을 pick한다.
  2. 다른 커밋 메세지는 가장 오래된 commit을 기준으로 squash한다.
    (Squash 할 pick을 s 로 바꾸면됨. 걍 첫번째 픽 빼고 나머지 다 s로 바꾸라는 얘기임)
  3. 다른 커밋의 작업 내역이 없어지는 것 ❌
  4. Ese -> :wq! 로 창에서 빠져나온다.

3. 수정용 에디터가 하나 더 나타난다

최종적으로 이 rebase된 커밋의 내용을 작성하는 부분으로 현재까지 적은 커밋 메세지가 전부 나타난다.
1. 불필요한 내용을 제거하고 현재 수정 내역에 대한 커밋 메세지를 정성껏 작성
2. Ese -> :wq! 로 창에서 빠져나온다. (저장하고 창 끄기)

4. Successfully rebased!

  1. 성공했다면 git log로 깔끔해진 커밋 메세지를 확인
  2. git push

5. Rebase 후 push하기

  • Rebase 는 commit history를 정리하는 역할
  • 같은 브랜치에서 rebase를 할때마다 history가 달라질 수 있다.
  • 수정 사항이 추가로 생긴 후 다시 rebase하면 history가 무조건 달라진다.
  • Git 은 history가 다른 branch의 push를 허용하지 않는다.
  1. git push origin feature/~~~ -f
    -f 옵션을 사용하여 force push를 진행 -f 아니면 —force(하이픈 두개) 둘중 하나

Rebase 중 conflict 해결하기

  • 충돌이 일어난 경우 rebase가 진행되지도, 끝나지도 않고 도중에 멈춰있으며 터미널이 (rebase~1/6) 같은 메세지로 rebase 진행중임을 표시해준다.
  1. 컨플릭트 수정하고
  2. Git add .
  3. Git commit은 하지 않는다
  4. Git rebase —continue(하이픈두개) 로 리베이스 진행
  5. 충돌이 나면 그때마다 충돌해결하고 git add .git rebase —continue(하이픈두개) 반복
  6. 해도해도 해결 안된다면 git rebase —abort(하이픈 두개) 로 rebase 진행 전 상황으로 되돌리기
profile
개발 공부 기록

0개의 댓글