Git | squash로 커밋 이력 관리하기

이동욱·2024년 1월 17일
0
post-thumbnail

squash의 필요성

작업을 진행하면서 하나의 기능을 위해 여러 개의 커밋을 생성하는 경우가 있습니다. 그리고 이러한 커밋들 사이에는 때로 무의미한 커밋들이 삽입되기도 합니다.

이러한 무의미한 커밋들은 커밋 이력을 추적하기 어렵게 만들고, 협업의 효율성을 저하시킬 수 있습니다.

이때 Git의 squash 기능을 사용하면 여러 개의 커밋을 하나의 커밋으로 묶어 정리할 수 있습니다.


Git Squah 실습

A라는 기능을 개발하기 위해 A-a, A-b, A-c의 작업을 수행했고 이때, 이 작업들이 각각 커밋으로 기록되어 있지만, 병합되면 더 효율적이다 가정해보겠습니다.

먼저, 로그를 통해 현재의 커밋 기록을 확인합니다.

여기서 A-a, A-b, A-c를 하나로 묶어보겠습니다.

1. rebase -i

Squash를 사용하기 위해서는 먼저 rebase를 사용해야 합니다.

A-a이전인 prev커밋을 기준으로 rebase 명령어를 통해 rebase 인터랙티브 모드를 시작합니다.

git reabse -i dfe10a70

리베이스 기준으로 설정한 이전 커밋을 기준으로 작업을 수행할 수 있는 vi 에디터가 열립니다. 여기서 squash를 사용할 수 있습니다.

vim명령어
i : 편집모드 (하단에 --INSERT--라고 나온다.)
esc : 명령모드
:wq : 저장 후 종료

2. squash

vi를 편집 모드로 변경하고 A-b, A-c의 picksquash로 변경합니다.

그 후 명령 모드로 전환하고 저장 후 종료합니다.

3. commit message

저장 후, 아래와 같은 화면이 보입니다.

이 화면에서는 변경된 부분에 대한 이전 커밋 메시지를 입력받는 화면입니다. 몇 개의 커밋이 합병되었고 각 커밋들의 메시지를 확인할 수 있습니다.

위에서와 같이 편집 모드에서 수정 후 저장하고 종료합니다.

그 후 로그를 확인하면, 세 개의 커밋이 하나의 새로운 커밋으로 합쳐진 것을 확인할 수 있습니다.



참고
Git squash로 여러 커밋을 하나로 만들기

profile
프론트엔드

0개의 댓글