Git Workflow & Rebase

인간·2022년 8월 2일
0

git rebase :

  • 말 그대로 베이스를 다시 만든다 라는 뜻으로 특정 커밋에 위치를
    기준으로 삼고 그 뒤에 커밋을 다 붙여준다.
    예제를 통해 설명 하겠다.

git merge 상황

  • 그림에서 보면 내가 특정 브렌치에서 작업을 하고 있다가 리모트에서 메인이 머지가 되면 메인을 풀로 당기고 그 특정 브렌치로 이동하여 브렌치에서 메인으로 머지를 하였다. 그렇게 되면 시간 순으로 커밋들이 전부 정렬이되게 된다.

    • 여기서 단점은 쓸대 없는 커밋들이 너무 많다는 점이다.
    • 머지 커밋부터 내가 commit 을 했던 것들이 모두 남아서 불 필요한 커밋들이 너무 많은걸 볼 수 있다. 만약 많은 개발자가 공유하고 있다면 브렌치 히스토리가 굉장히 지저분해지가 쉽다.
    • 그리고 작업내역이 시간에 따라 구분 되어지기 떄매 하나를 수정하더라도 다른작업과 내역이 겹쳐 구분이 어려워 집니다.

git rebase

  • 특정 커밋으로 베이스를 옮기고 그 지점부터 커밋을 정렬합니다. (시간순이 아님)
    • 하지만 무조건 좋은것만은 아니다. 만약 충돌(Conflict)가 발생하면
      특정 커밋을 기준으로 삼고 정렬한거라 3가지의 커밋이 모두 충돌이 일어 날 수 있다. 그렇게되면 Merge를 했을때와 달리 충돌을 3번 수정 해줘야 한다.

git squash

  • 불 필요한 커밋을 지울떄 사용한다. rebase도중에 이어서 실행된다.

  • 사용법

    'git rebase -i main'을 진행하고

먼저 내가 베이스를 정할 commit을 정한다. pick으로 정하면된다.
보통 1번 가장 오래된 커밋으로 삼는다 마지막이 가장 최신화 된 커밋이니 물론 실수를 하거나 예전이라면 이전껄 쓸수도 있다.
그러고 나머지 두가지의 불 필요한 커밋은 pick을 s로 변경해주고 지워준다. 그리고 esc를 누르고 : wq로 창에서 빠져나온다.

  • 그러면 또하나의 화면이 나타난다.

  • 여기서 불필요한 커밋들을 제거하고 수정 내역에 대한 커밋을 적고
    ESC : WQ 저장하고 에디터에서 나온다.

profile
잇츠미

0개의 댓글