Git에서 한 브랜치에서 다른 브랜치로 합치는 방법은 Merge와 Rebase다.
실행결과는 같지만 rebase를 하면서 동시에 squash 를 사용해 커밋을 하나로 정리 할 수 있다.
merge는 쉽지만 커밋개수가 많아지면서 히스토리가 지저분해지고, rebase는 약간 복잡하지만 정상적인 상황이라면 커밋이 하나이기 때문에 히스토리가 깔끔하다.
--> 그러니까 앞으로 rebase를 사용하자!!👍👍
그렇다면 왜 merge는 커밋히스토리가 지저분할까?
아래 그림을 참고해보자.
merge는 각각의 브랜치에서 커밋할 때마다 커밋이 master에 계속 쌓이기
때문에 보기에 지저분해지는 것이다.
이런식으로..
정리하지면 git merge는
불필요한 merge commit을 생성할 수 있기 때문에 모든 branch마다 "merge commit"이 남는다. 만약 main branch를 공유하는 개발자가 많고, 프로젝트의 규모가 크다면, branch history가 지저분해진다.
독립된 브랜치에서 로직 하나를 작성해도, 다른작업과 그내역이 겹쳐 구분하기 어려워진다.
위의 그림을 보면 보다 명확해진다.
rebase는 히스토리를 일렬로, 각 브랜치별로 잘 정리를 해주기 때문에
히스토리가 매우 깔끔하다.
진행중인 2차프로젝트를 통해 실습을 진행해보자.
커밋을 올리고, master로 branch를 변동했다.
pull로 master를 최신화했다.
위와 같은 화면에서
이렇게 squash 의 s로 삭제해준다.
커밋메시지가 2개가 뜨는데 최근거를 삭제해 주는 것이 좋다.
커밋메시지를 합쳐주고 마지막으로 branch에 푸쉬를 하는데 오류메시지 발생시 뒤에
-f를 붙혀서 강제로 푸쉬해준다.
원래 커밋이 2개였는데, 캡쳐를 못했다..
위와 같은 절차를 거치면 최종 스샷처럼 커밋이 하나로 합쳐지게 되며, rebase가 완료된다!!